У меня есть метод в файле javascript.Жасмин: проверка функции, вызываемой из другой функции с использованием жасмина
function foo() {
setTimeout(function() {
bar.getSomeUrl();
},WAIT_FOR_SOMETIME);
}
Теперь getSomeUrl()
реализован ниже.
var bar = {
getSomeUrl : function(){
window.location.href = 'someUrl';
return;
},
anotherProp : function() {
return bar.getSomeUrl();
}
};
Я пытаюсь проверить, что метод getSomeUrl()
будет вызываться, когда я вызываю метод foo()
.
Я использую жасмин для тестирования. Мой тест жасмин, как показано ниже:
describe('This tests getSomeUrl()', function() {
it('is called when foo() is called', function(){
spyOn(bar,'getSomeUrl').and.callFake(function(){});
window.foo();
expect(bar.getSomeUrl).toHaveBeenCalled();
});
});
Я не забочусь о тестировании Что происходит внутри getSomeUrl()
, потому что у меня есть отдельный тест для этого.
Все, что я пытаюсь проверить, это то, что когда я вызываю свой foo() откуда-то, вызывается getSomeUrl()
.
У меня есть следующие проблемы:
- Если я делаю это так, тест не пройден, и в конце выполнения всех тестов, браузер перенаправляет
someUrl
. Я не ожидал, что это произойдет, потому что я думал, что у меня был шпион наbar.getSomeUrl()
и возвращалсяfake method
, он на самом деле не назоветbar.getSomeUrl()
, когда я позвонюwindow.foo()
. Так что я подумал, может быть, я должен сделать это, как показано ниже:
ожидать (window.foo) .toHaveBeenCalled();
Это не имеет смысла, потому что я пытаюсь проверить, что вызывается bar.getSomeUrl()
.
Однако, когда я сделал это, тест не пройден, и я получаю ошибку ниже:
Error: Expected a spy, but got Function.
Я также думал, что это может быть setTimeout
функция, которая вызывает вопрос и изменил функцию foo()
на:
function foo() {
bar.getSomeUrl();
};
ничего не изменило
Я работал с Jasmin e и Javascript только в течение нескольких дней и имеют широкое понимание того, как все работает.
Любое предложение пройти тест, а также указатель относительно того, что я делаю неправильно, очень ценится.
это не связано с java. Javascript пишется одним словом и не имеет отношения к Java. –
Понадобился. Благодарю. – ChillBan123
У вас есть синтаксическая ошибка. 'bar.getSomeUrl' является литералом объекта (с недопустимым синтаксисом). Это не функция – Phil