Я работаю над созданием начального веб-приложения для поддержки облегченной разработки Typescript и jQuery.Пока что все работает хорошо, выполняя все классные вещи, которые я хочу, например, автоматическое обнаружение изменений, перестройку и перезапуск приложения, когда вы меняете вещи, и т. Д. Он также поддерживает модульное и e2e-тестирование.
НоЯ никогда не тестировал код jQuery модулем, и я даже не знаю, с чего начать тестирование этого простого «Hello, world!»app:
import * as $ from 'jquery';
export interface SampleInterface {
stuff: string;
}
$('#message').text('Hello, world!');
Как будет выглядеть модульный тест, который гарантирует, что это сообщение установлено?
Я установил karma-jquery
и karma-jasmine-jquery
.Я много гуглил в поисках примеров использования этих инструментов, но ни одно из того, что я видел, не соответствует простой проблеме, которую я пытаюсь решить.
ОБНОВЛЕНИЕ:
Я думаю, что я ближе к тому, что я хочу сделать со следующим тестом, который не совсем работает:
describe('main', () => {
it('should say hello', () => {
spyOn(jQuery.prototype, 'text').and.callThrough();
require('./main');
expect(jQuery.prototype.text).toHaveBeenCalledWith('Hello, world!');
});
});
Меня не удивляет, что это не работаетпотому что это шпионит за методом-прототипом jQuery, тогда как я думаю, что мне нужно шпионить, это конкретный объект jQuery, но как его создать и шпионить за ним, чтобы он работал с селектором #message
, я неПонял еще.