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

Как установить порядок выполнения тестовых примеров мокко в нескольких файлах

У меня есть два файла javascript, в которых содержатся тестовые задания mocha.

//----------abc.js -------------

describe("abc file", function(){
  it("test 1" , function(){
    assert.equal(20 , 20); 
  });
}); 

//---------xyz.js--------------
describe("xyz file", function(){
      it("test 1" , function(){
        assert.equal(10 , 10); 
      });
    });

Я положил их в папке под названием test, и когда я исполняю mocha командовать первые файлы (abc.js) всегда выполняются перед xyz.js. Я подумал, что это может быть связано с алфавитным порядком и переименовал файлы в

abc.js => xyz.js
xyz.js => abc.js

но все же, содержимое xyz.js (ранее abc.js) выполняется первым. Как я могу изменить порядок выполнения этих тестовых файлов?

4b9b3361

Ответ 1

Mocha имеет параметр --sort (короткий -S), который сортирует тестовые файлы:

$ mocha --help

[...]
    -S, --sort                              sort test files
[...]

Ответ 2

Во втором файле требуется первый:

--- two.js ---
require("./one")

Mocha будет запускать тесты в порядке выполнения describe вызовов.

Ответ 3

Я следую полностью отдельному решению для этого.

Поместите все ваши тесты в папку с именем test/и Создайте файл tests.js в корневом каталоге в порядке выполнения

--- tests.js ---
require('./test/one.js')
require('./test/two.js')
require('./test/three.js')

И в файлах тестов one.js, two.js и т.д. напишите ваши простые тесты мокко

таким образом, если вы хотите запустить их в указанном порядке, просто запустите mocha tests.js

Ответ 4

Так как mocha сортирует файлы в алфавитном порядке, я обычно префишу свои имена тестовых файлов номерами, например:

  • 0 - util.js
  • 1 - something low level.js
  • 2 - something more interesting.js

и др.

В дополнение к тому, чтобы быть очень прост в обслуживании (без gulp grunt или любой из этих глупостей, без редактирования вашего package.json...), он обеспечивает преимущество:

  • люди, читающие ваш исходный код, получают представление о структуре вашей программы, начиная с менее интересных частей и перемещаясь к бизнес-слою.
  • Если тест завершился неудачно, у вас есть некоторые указания на причинность (если что-то не удалось в 1 - something.js, но нет ошибок в 0 - base.js, то это, вероятно, ошибка слоя, на который распространяется 1 - something.js

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

Ответ 5

Если вы предпочитаете определенный порядок, вы можете перечислить файлы (в порядке) в качестве аргументов командной строки для mocha, например:

$ mocha test/test-file-1.js test/test-file-2.js

Чтобы избежать многократного ввода каждый раз, когда вы хотите запустить его, вы можете превратить его в npm script в свой package.json:

{
  // ...
  "scripts": {
    "test": "mocha test/test-file-1.js test/test-file-2.js"
  }
  // ...
}

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

$ npm test

Или, если вы используете Gulp, вы можете создать задачу в своем gulpfile.js:

var gulp = require('gulp');
var mocha = require("gulp-mocha");

gulp.task("test", function() {
  return gulp.src([
      "./test/test-file-1.js",
      "./test/test-file-2.js"
    ])
    .pipe(mocha());
});

Затем запустите $ gulp test.

Ответ 6

Чтобы мои тесты выполнялись в определенном порядке, он создал отдельный файл test.js, а затем добавил describe для каждого тестового файла mocha, который я хотел выполнить.

test.js:

describe('test file 1', function() {
  require('./test1.js')
})

describe('test file 2', function() {
  require('./test2.js')
})

Тогда просто запустите mocha test.js