Как бы я протестировал этот простой код jQuery с помощью karma / jasmine? - PullRequest
0 голосов
/ 20 мая 2018

Я работаю над созданием начального веб-приложения для поддержки облегченной разработки 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, я неПонял еще.

1 Ответ

0 голосов
/ 21 мая 2018

Я наконец наткнулся на создание теста, который работает:

describe('main', () => {
  let jqdiv;

  beforeEach(() => {
    const div = document.createElement('div');
    div.setAttribute('id', 'message');
    document.body.appendChild(div);
    jqdiv = $(div);
  });

  afterEach(() => {
    jqdiv.remove();
  });

  it('should say hello', () => {
    require('./main');
    expect(jqdiv.text()).toBe('Hello, world!');
  });
});

Обновление :

Улучшен тест, так что он очищается после себя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...