2014-02-04 2 views
5

Я использую CucumberJS для запуска тестов в моем веб-приложении NodeJS.Как я могу запустить одну особенность CucumberJS с помощью GruntJS?

На данный момент я могу выполнить все мои задачи, используя grunt или только задачи CucumberJS, используя grunt cucumberjs.

Но теперь я хочу выполнять только определенные функции.

Например, у меня есть следующие файлы: полнометражных

  • Signin.feature
  • Favourite.feature

Я хочу только запустить любимые тесты функций, используя такие команды как:

grunt cucumberjs Favourite

ли это возможно?


Кстати, вот мой gruntfile.js:

'use strict'; 

module.exports = function(grunt) { 
    grunt.initConfig({ 
     pkg: grunt.file.readJSON('package.json'), 
     ... 
     cucumberjs: { 
      src: 'features', 
      options: { 
       steps: 'features/step_definitions', 
       format: 'pretty' 
      } 
     } 
    }); 

    ... 
    grunt.loadNpmTasks('grunt-cucumber'); 

    grunt.registerTask('default', [... 'cucumberjs']); 
}; 

ответ

4

я, наконец, понял, решение, которое, кажется, работает достаточно хорошо, основываясь на tags.

Итак, для каждого из моих файлов функций я добавил тег.

Например, для Favourite.feature:

@favourite 
Feature: Favourite 
    As a user of the system 
    I would like to favourite items 

Тогда я использовал GruntJS option указать теги, которые я хочу запустить через аргумент командной строки.

я делаю это через grunt.option() вызов в моей gruntfile:

cucumberjs: { 
    src: 'features', 
    options: { 
     steps: 'features/step_definitions', 
     format: 'pretty', 
     tags: grunt.option('cucumbertags') 
    } 
} 

Так что теперь я могу запустить GruntJS из командной строки, как это:

grunt cucumberjs [email protected] 

И это будет работать только функцию с тегом @favourite. Ура!

0

вот моя задача, которая позволяет фильтровать по feature.name:

https://github.com/webforge-labs/cuked-zombie/blob/master/tasks/cucumber.js (скачать его в папку «задачи», и вы можете загрузить его с: grunt.loadTasks('tasks'))

настроить его, как это (Gruntfile.js):

grunt.loadNpmTasks('grunt-cucumber'); 

grunt.initConfig({ 
    cucumberjs: { 
    // config for all features when called with: `grunt cucumber` 
    all: { 
     src: 'features', 
     options: { 
     steps: "tests/js/cucumber/bootstrap.js", 
     format: "pretty" 
     } 
    }, 

    // config for single features when called with `grunt --filter some-feature` 
    features: { 
     src: 'features', 
     options: { 
     steps: "tests/js/cucumber/bootstrap.js", 
     format: "pretty" 
     } 
    } 
    } 
}); 

использовать его:

grunt cucumber --filter post 

, который будет запускать сообщение.Функция (где-то в каталоге функция)

С новым огурца-JS версии, то можно запустить его, используя функцию линии: https://github.com/cucumber/cucumber-js/pull/168

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