如何在AngularJS中的测试之间重置服务

时间:2015-07-04 02:24:38

标签: angularjs unit-testing service

我有一个注入beforeEach的服务:

beforeEach(inject(function($rootScope, $state, $injector, $controller, MyService) {
    var state = $state;
    scope = $rootScope.$new();
    myService = MyService;
    ctrl = $controller('MainCtrl', {$state: state, MyService: myService});
}));

我用“它”描述了一些测试:

it('test1', function() { 
   var data = ["test"]; 
   ctrl.extract_data(data); 
   expect(myService.get_data()).toEquals("test");
});

现在我的问题是我在测试之间有一个共享变量(可变数据),如果我用其他数据运行测试(例如var data = [“a”,“b”]),那么变量就是在myService中共享将包含a,b和test(从之前的测试中检索)。有没有办法在每次运行测试时“重置”服务内容?

1 个答案:

答案 0 :(得分:0)

我不知道重置它的方法,但每个it块都不与其他it块共享任何内容。您可以在每个it块中注入一个新控制器。

it('test1', function() {
   var ctrl; 
   var data = ["test"]; 
   inject(function($controller) {
     ctrl = $controller('MainCtrl', {$state: state, MyService: myService}
   })
   ctrl.extract_data(data); 
   expect(myService.get_data()).toEquals("test");
});