我在angularjs工作,我的单元测试使用Jasmine和mgMock。
我了解到,当我有测试更改某个服务的提供者对象(如配置)时,这些更改将转移到同一个运行中的其他测试。这会在测试之间创建运行依赖性。
有谁知道如何清除角度提供者&每次测试后实例缓存?
答案 0 :(得分:0)
问题出在我的代码中:
我的代码与下面的代码类似。而且由于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
};
}
})();