Подтвердить что ты не робот

Как я могу использовать HTML-светильники с помощью Runtime Karma с помощью Qunit?

Я играю с Karma тестировщиком (http://karma-runner.github.io/0.8/index.html) с помощью qunit (http://qunitjs.com). Я успешно создал и провел простые тесты (100% JavaScript), но теперь я пытаюсь использовать устройства HTML для тестирования кода, который взаимодействует с узлами DOM. Я могу загрузить эти светильники, объявив их в "файлах" следующим образом:

{pattern: 'fixtures/myfixture.html', watched: true, served: true, included: false}

он обслуживается сервером кармы, но я не понимаю, как я могу получить доступ к его DOM: (

Предположим, что мой прибор - простой html файл, содержащий следующую разметку:

<div id="container">hello world</div>

Как я могу написать тест, который может получить доступ к этому node (div)? "Документ" связан с файлом "context.html" в "статической" папке, насколько мне известно... так где HTML-код моего прибора?

4b9b3361

Ответ 1

Я не использую AngularJS... Я решил, приняв jasmine-jquery: https://github.com/velesin/jasmine-jquery (я использую жасмин только для светильников, мои тесты по-прежнему написанный с использованием qunit). В моем файле конфигурации у меня есть следующее:

    frameworks = ['qunit', 'jasmine'];

    files = [

      JASMINE, 
      JASMINE_ADAPTER,
      QUNIT, 
      QUNIT_ADAPTER,

      // dependencies
      {pattern: 'src/main/webapp/js/libs/jquery/jquery-1.8.3.js', watched: false, served: true, included: true},
      {pattern: 'src/test/js/lib/jasmine-jquery.js', watched: false, served: true, included: true},

      // fixtures
      {pattern: 'src/test/js/**/*.html', watched: true, served: true, included: false},
      {pattern: 'src/test/js/**/*.json', watched: true, served: true, included: false},
      {pattern: 'src/test/js/**/*.xml', watched: true, served: true, included: false},

      // files to test 
      {pattern: 'src/test/js/**/*.js', watched: true, served: true, included: true}
    ];

то в моих тестовых файлах:

module("TestSuiteName", {
    setup: function() {
        var f = jasmine.getFixtures();
        f.fixturesPath = 'base';
        f.load('src/test/js/TestFixture.html');
    },
    teardown: function() {
        var f = jasmine.getFixtures();
        f.cleanUp();
        f.clearCache();
    }
});

Ответ 2

Если вы используете AngularJS, вы можете использовать препроцессор html2js. Пример того, как это сделать, - https://github.com/vojtajina/ng-directive-testing.

Эти html файлы обслуживаются Karma, но они не включены в страницу, поэтому вам придется их брать - возможно, через запрос xhr.

Вот аналогичный препроцессор, который преобразует html файл в строку JS (не привязан к Angular): https://github.com/karma-runner/karma-html2js-preprocessor Вы можете увидеть, как его использовать в тесте e2e: https://github.com/karma-runner/karma-html2js-preprocessor/tree/master/e2e-test

ПРИМЕЧАНИЕ: этот препроцессор html2js не является частью Karma 0.8, а плагины работают только с Karma 0.9+ (в настоящее время в канале канала), поэтому вам нужно использовать канарейку (которая содержит много изменений; -))...