我在 angularjs 中工作,我的单元测试使用 Jasmine 和 mgMock。
我了解到,当我进行更改某个服务(如配置)的提供者对象的测试时,这些更改会转移到同一运行中的其他测试。这会在测试之间创建运行依赖性。
有谁知道我如何在每次测试后清除 Angular 提供程序和实例缓存?
最佳答案
问题出在我的代码中:
我的代码类似于下面的代码。由于 Angular 在测试运行之间保留模块定义(因为它不负责脚本加载,所以它应该如此),状态变量在测试之间共享。
(function(){
angular.module('myModule',['ng']).provider(myServiceProvider);
var status = 'init';
function setStatus(newStatus) {
status = newStatus;
}
function myServiceProvider() {
function myServiceFactory() {
return status;
}
return {
$get: myServiceFactory,
setStatus: setStatus
};
}
})();
解决方案是确保变量在提供程序创建范围内声明:
(function(){
angular.module('myModule',['ng']).provider(myServiceProvider);
function myServiceProvider() {
var status = 'init';
function setStatus(newStatus) {
status = newStatus;
}
function myServiceFactory() {
return status;
}
return {
$get: myServiceFactory,
setStatus: setStatus
};
}
})();
关于angularjs - 如何清理测试之间的 Angular 缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23130596/