У меня есть шпионский объект, который я использовал в двух тестовых случаях. Я использую метод toHaveBeenCalled, чтобы проверить, вызван ли шпионский метод или нет.
Мой код отлично работает при использовании с одним тестом, но когда я использую два тестовых примера, где я использовал одного и того же шпиона, он дает неверные результат.
Согласно коду, он должен вызывать шпиона во втором вызове только для обоих тестовых случаев, но он вызывает первый вызов во втором тестовом примере.
My Source файл : MyService.js
...
this.setUserMethod1 = function () {
if(this.loggedIn) {
UtilService.User();
}
}
this.setUserMethod2 = function () {
if(this.loggedIn) {
UtilService.User();
}
}
...
My Spe c файл : MyService.spec.js
var UtilService = jasmine.createSpyObj('UtilService', ['User']);
UtilService.User.and.callFake(function () {
return {
setUser: function(){}
};
});
describe('MyService', function () {
it('setUserMethod1 should do xyz', function () {
MyService.loggedIn = false;
MyService.setUserMethod1();
expect(UtilService.User).not.toHaveBeenCalled();
MyService.loggedIn = true;
MyService.setUserMethod1();
expect(UtilService.User).toHaveBeenCalled();
});
it('setUserMethod2 should do pqr', function () {
MyService.loggedIn = false;
MyService.setUserMethod2();
expect(UtilService.User).not.toHaveBeenCalled();
MyService.loggedIn = true;
MyService.setUserMethod2();
expect(UtilService.User).toHaveBeenCalled();
});
});
Выдает следующую ошибку:
debug.html:38 Expected spy UtilService.User not to have been called.
Думаю, я использую одного и того же шпиона в обоих тестовых случаях, и он уже вызван один раз, что вызывает проблемы.
Могу я узнать, что я делаю не так?