2015-07-04 18 views
3
測試之間重置服務

我有注入beforeEach服務:如何AngularJS

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數據= [「一個」,「b」])的測試中,在爲myService共享的變量將包含一個,b和測試(從之前的測試中檢索)。每次測試運行時,有沒有「重置」服務內容的方法?

+1

你好,我想我有同樣的問題,但顯然,'angular.mock.inject'似乎每次都提供一個新的服務實例。你可以創建一個plunkr來展示問題嗎? –

+0

我也有一個相同的服務實例用來運行不同的測試問題。在''beforeEach';作爲一種變通方法我用'$ provide.service( '爲myService',app.MyService)重新定義了服務。 – tsauerwein

回答

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"); 
}); 
+0

你也可以換行功能在一個新的功能,使用它作爲一個快捷方式 – capsula