如何在测试之间清理角度缓存

时间:2014-04-17 10:24:41

标签: angularjs jasmine

我在angularjs工作,我的单元测试使用Jasmine和mgMock。

我了解到,当我有测试更改某个服务的提供者对象(如配置)时,这些更改将转移到同一个运行中的其他测试。这会在测试之间创建运行依赖性。

有谁知道如何清除角度提供者&每次测试后实例缓存?

1 个答案:

答案 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
    };
  }
})();