2014-10-28 4 views
4

У меня есть конфиг karma настроен правильно, файл конфигурации, работает в фоновом режиме, просто отлично. Как только я меняю и сохраняю файл, он повторно запускает тесты ... все 750 единиц тестов. Я хочу иметь возможность запускать несколько. За исключением ручного взлома файла конфигурации или комментирования сотен тестов по многим файлам, есть ли простой способ сделать это?Как запустить только определенные тесты в карме?

E.g. при запуске тестов сервера командной строки, используя mocha, я просто использую regexp: mocha -g 'only tests that I want'. Делает это намного легче отлаживать и быстро проверять.

ответ

4

Вы можете сделать это в момент запуска кармы, к сожалению, не во время выполнения. Если вы хотите изменить его динамически, вам нужно приложить еще несколько усилий.

Допустим, вы хотите, чтобы сосредоточиться на определенном наборе/набор тестов с самого начала, на karma-mocha plugin page есть этот фрагмент кода, чтобы сделать то, что вы хотите:

module.exports = function(config) { 
    config.set({ 
    // karma configuration here 
    ... 

    // this is a mocha configuration object 
    client: { 
     // The pattern string will be passed to mocha 
     args: ['--grep', '<pattern>'], 
     ... 
    } 
    }); 
}; 

Для того, чтобы сделать <pattern> параметрический вы необходимо обернуть файл конфигурации в конфигураторе , который будет прослушивать CLI и настраивать конфигурацию кармы для вас.

Обратитесь к this SO answer, чтобы узнать, как настроить очень простой Конфигуратор.

+0

спасибо. Я прочитал его, но даже это зависит от строки комментариев. Когда я запускаю тесты командной строки, это хорошо; Я просто делаю «mocha -g» какое-то выражение ». Но карма занимает некоторое время, чтобы начать и автоматически повторять. Я хотел бы иметь некоторый файл, который я могу включить, где я только что изменил его, и он автоматически подбирает его. Есть идеи? – deitch

6

Так что теперь я чувствую себя глупо. mocha поддерживает очень узкую версию соответствия regexp.

Это запускает все тесты

describe('all tests',function(){ 
    describe('first tests',function(){ 
    }); 
    describe('second tests',function(){ 
    }); 
}); 

Это работает только 'Первые испытания'

describe('all tests',function(){ 
    describe.only('first tests',function(){ 
    }); 
    describe('second tests',function(){ 
    }); 
}); 

Вы также можете сделать it.only()

я должен был заметить, что. Вздох.

+0

Это ограничивает выполнение конкретных тестов или наборов. Я думал, что вы хотите выполнить их по ключевому слову. В любом случае, счастлив, что вы нашли решение, соответствующее вашим потребностям. – MarcoL

+0

Я пытался ограничить конкретные тесты или комплекты «на лету». Я думал, что единственный способ сделать это - это «макро» подход, такой как CLI, но как-то в реальном времени вводится в карму. Я не думал о том, чтобы идти микро, снизу вверх. Это сработало очень хорошо. – deitch

0

У меня есть один и тот же вопрос, и это мой workround путем небольшого изменения на karma.conf.js. Фактически, возьмите аргумент из командной строки и измените шаблон в «файлах». Я использую minimist для анализа списка аргументов.

В конфигурационном файле:

/* Begin */ 
var minimist = require('minimist'); 
var argv = minimist(process.argv); 
var testBase="test/unit"; 
var testExt=".spec.js"; 
var unitTestPattern = testBase+'/**/*'+testExt; 
if ("test" in argv){ 
    unitTestPattern = testBase+"/"+argv["test"]+testExt; 
} 
/* End */ 
module.exports = function(config){ 
    config.set({ 
    //.... 

    files : [ 
    //.... 
     unitTestPattern,    //place here 
//  'test/unit/**/*.spec.js', //replace this 
    //.... 
    ], 
    //.... 

    }); 
}; 

запустить в командной строке:

karma start test/karma.conf.js --single-run --test #TEST_CASE_FILE# 
0

хорошее расширение, которое может помочь здесь карма-жасмин-HTML-репортер-LiveReload https://www.npmjs.com/package/karma-jasmine-html-reporter-livereload

или карма-жасмин-html-репортер https://www.npmjs.com/package/karma-jasmine-html-reporter?__hstc=72727564.86845f057bb4d741f59d578059e30644.1443860954685.1453095135802.1453138187458.37&__hssc=72727564.1.1453138187458&__hsfp=2285154675

Создает страницу отладки, в которой вы можете запускать каждый тест индивидуально. очень полезно для крупных проектов!

+0

Да, я этого не видел. Поэтому вместо автоматического повторного запуска всех тестов вы выбираете их на странице отладки? – deitch

+0

, если вы храните синглерун Кармы: false, вы можете запускать индивидуальные тесты –

0

1) В вашем karma.conf.JS получить параметры из терминала:

var files = (process.env.npm_config_single_file) ? process.env.npm_config_single_file : 'test/test_index.js'; 

2) Для запуска одного теста вам нужно будет установить объект параметра со всей вашей конфигурацией (без файлов и препроцессоров):

var option = { 

    webpack: { 
    // webpack configuration 
    }, 

    // more configuration...... 
}; 

3) Установите файлы и путь препроцессоры:

option.files = [ 
     {pattern: files, watch: false} 
    ]; 

    option.preprocessors = {}; 

    option.preprocessors[files] = [ 'webpack', 'sourcemap' ]; 

    // call config.set function 
    config.set(option); 

4) Выполнить в терминале:

npm test --single_file=**/my-specific-file-spec.js 

Для получения дополнительной информации посетите этот PR: https://github.com/webpack/karma-webpack/pull/178