Я знаю, когда вы используете spyOn
, у вас могут быть разные формы, такие как .and.callFake
или .andCallThrough
. Я не совсем уверен, которое мне нужно для этого кода я пытаюсь проверить ...Какой тип шпиона использовать для тестирования
var lastPage = $cookies.get("ptLastPage");
if (typeof lastPage !== "undefined") {
$location.path(lastPage);
} else {
$location.path('/home'); //TRYING TO TEST THIS ELSE STATEMENT
}
}
Вот некоторые из моего тестового кода:
describe('Spies on cookie.get', function() {
beforeEach(inject(function() {
spyOn(cookies, 'get').and.callFake(function() {
return undefined;
});
}));
it("should work plz", function() {
cookies.get();
expect(location.path()).toBe('/home');
expect(cookies.get).toHaveBeenCalled();
expect(cookies.get).toHaveBeenCalledWith();
});
});
Я пытался много из разных вещей, но я пытаюсь проверить заявление else
. Поэтому мне нужно сделать cookies.get == undefined
. Everytime я пытаюсь сделать это, хотя, я получаю эту ошибку:
Expected '' to be '/home'.
Значение location.path()
никогда не меняется, когда cookies.get()
равно undefined
. Я думаю, что неправильно использую spyOn?
Прослеживание моих пробных значений:
beforeEach(inject(
function(_$location_, _$route_, _$rootScope_, _$cookies_) {
location = _$location_;
route = _$route_;
rootScope = _$rootScope_;
cookies = _$cookies_;
}));
Последующие действия по функциям:
angular.module('buildingServicesApp', [
//data
.config(function($routeProvider) {
//stuff
.run(function($rootScope, $location, $http, $cookies)
нет имен на эти функции, поэтому как я называю cookies.get
?
Что такое 'cookies'? Откуда это? Если это предполагается издеваться над '$ cookies', значит, это неправильно. '$ cookies' не вводится, а' cookies' не '$ cookie'. – estus
Для этого есть ярлык: 'spyOn (cookies, 'get'). And.returnValue (undefined);' – Thomas
Я добавил редактирование, чтобы помочь прояснить мои макеты. Не уверен, что это то, что вы имели в виду, но у меня были эти макеты в моем коде, они просто не показывались. – FF5Ninja