2013-09-24 5 views
2

У Jasmine есть iit() и ddescribe, а у Mocha есть it.only и describe.only, но я не вижу никакого способа заставить QUnit сосредоточиться на выполнении одного теста.Можно ли запустить один тест, используя QUnit inside Karma?

Пользовательский интерфейс QUnit позволяет запускать один тест, но я не вижу, как заставить его работать внутри кармы, поскольку он не отображает пользовательский интерфейс QUnit.

ответ

2

QUnit не очень хорошо разработан для этого, но вы можете улучшить его!

Механизм фильтрации QUnit - это validTest функция, которая считывает QUnit.config.filter (строка, название теста). См https://github.com/jquery/qunit/blob/master/src/core.js#L820

Есть две проблемы:

  1. это только позволяет выбрать один тест,
  2. вам нужно знать выбранное имя теста заранее (потому что тесты фильтруются при их создании).

Suggest изменения QUnit к:

  • фильтра с помощью функции пользовательского «фильтра» (реализация по умолчанию может делать то, что текущий validTest делает),
  • фильтр испытания при выполнении (средства , собирает все испытания в первую очередь)

Затем внедрение инклюзивных тестов будет простым ;-)

3

Вот мое решение. Он отлично работает для меня, но YMMV.

Скачать QUnit-карма-setup.js, QUnit-карма-launch.js из here

Тогда в вашем Gruntfile:

config.set({ 
    frameworks: ['qunit'], 
    files: [ 
    'your-app-files-here/**/*.js', 
    'qunit-karma-setup.js', 
    'your-tests-here/**/*.js', 
    'qunit-karma-launch.js' 
    ] 
}); 

Теперь вы можете использовать omodule(), отъесть (), oasyncTest() для запуска только выбранных модулей или тестов соответственно.

+0

^Это работает очень хорошо - спасибо :) – shane

1

Добавить это на верхней части тестового файла

var ttest = test; 
test = function() {} 

И переименовать тест, который вы хотите запустить в ttest. Выглядит неуклюже, но просто и хорошо работает.

0

Я считаю, вы можете использовать only. Взятые из документации:

test('my test 1', function (assert) { ... }); 

only('my test that will be run exclusively now', function (assert) { ... }); 

Таким образом, вместо того, чтобы использовать слово test, вы используете only.

Смежные вопросы