這是我的代碼:如何間諜在Jasper內部創建的函數beforeEach代碼塊?
describe('Factory: BaseService', function() {
var fctry, mockBackend;
beforeEach(function() {
module('BaseApp');
cb = function() {};
inject(function(_BaseService_, _$httpBackend_) {
mockBackend = _$httpBackend_;
BaseService = _BaseService_;
});
});
it('logout() should POST to /logout', function() {
spyOn(BaseService, 'accessErrors').and.callThrough();
spyOn('cb');
mockBackend.expectPOST("/logout").respond(404, {msg: 'Not Found'});
BaseService.logout(cb);
mockBackend.flush();
expect(BaseService.accessErrors).toHaveBeenCalled();
expect(BaseService.cerrorMessages).toEqual(['Not Found']);
expect(cb).toHaveBeenCalled();
});
});
當我運行這個測試,我得到它說的錯誤:
Chromium 48.0.2564 (Ubuntu 0.0.0) Factory: BaseService logout() should POST to /logout FAILED
Error: No method name supplied
和它指向的線spyOn('cb')
。監視beforeEach
代碼塊中創建的函數的正確方法是什麼?
感謝。快速問題,你究竟是什麼意思,「通常,spyOn應該用來消除依賴」?是不是間諜用來窺探對象,看它們是否被調用,以及它們被調用的內容? – user2719875
你所描述的是_spy_的功能。 'spyOn'具有依賴性(例如附加到控制器或服務的功能或...),並在測試期間用間諜替換它。注意區別?在這種情況下,你不需要依賴窺探 - 你只需要一個跟蹤調用的對象(一個間諜)。 – mgilson