У меня есть проект Aurelia, использующий ECMAscript 6, и я пытаюсь выполнить модульное тестирование функции, которая вызывает $('#saveFailed').modal();
из начальной загрузки Twitter 3.
Эта функция прекрасно работает в самом приложении, но когда я пытаюсьчтобы spyOn модальный, чтобы вернуть поддельный результат, консоль говорит мне, что jquery не знает модальных:
Error: <spyOn> : modal() method does not exist
У меня есть bootstrap.min.js и jquery, правильно загружаютсяи может видеть их в chrome devtools при запуске karma в отладке:
files: [
'../styles/bootstrap/css/bootstrap.min.css',
'../node_modules/jquery/dist/jquery.min.js',
'../styles/bootstrap/js/bootstrap.js',
... ]
Пример тестируемой функции
async create() {
let result = false;
if (someCondition) {
result = await this.session.update();
} else {
result = true;
}
if (result) {
super.saveAndContinue();
} else {
this.allowContinue = false;
$('#saveFailed').modal();
}
}
Пример тестового фрагмента
it('blah blah', done => {
(async () => {
spyOn(componentUnderTest.session, 'update').and.returnValue(null);
spyOn($.fn, 'modal').andCallFake(function() {});
await componentUnderTest.create();
expect(componentUnderTest.allowContinue).toBeFalsy();
done();
})().catch(done.fail);
});
});
Я также пытался шпионить за $('#saveFailed')
и добавлять жестко закодированный html модала к $document.body
в beforeEach.
Кто-нибудь знает, как я могу заставить jquery распознавать"модальная" функция, которая определена в bootstrap.min.js?