При написании автоматических тестов системы/интеграции обычно для первого шага запускается до того, как все тесты будут «запускать сервер». Поскольку запуск сервера может быть дорогостоящим, желательно сделать это один раз, а не перед каждым отдельным тестом. JUnit has easy functionality for doing this. Есть ли эквивалентный стандартный шаблон в nodeunit? Или это требует ручного проката?Запуск кода установки перед набором тестов в узле узла
ответ
Я не думаю, что Nodeunit имеет этот встроенный, но многие люди справляются с такими задачами с Grunt.
Да, Nodeunit имеет setUp()
и tearDown()
функции, которые всегда выполняться до и после испытаний. Вы можете использовать setUp()
, чтобы запустить сервер так:
var server = require("path/to/server.js");
exports.setUp = function(callback) {
server.start(8080, function() {
callback();
});
};
// run your tests here, setUp will be called before each of them
Это предполагает, в server.js у вас есть:
exports.start = function() {
// start server here
}
tearDown()
функция запускается после test.done()
называется.
Для примера этого, проверить его в действии здесь: https://github.com/jamesshore/Lessons-Learned-Integration-Testing-Node/blob/master/src/_server_test.js
Документация находится здесь: https://github.com/caolan/nodeunit#groups-setup-and-teardown
Поскольку ваши наборы тестов с использованием nodeunit только узловые модули, вы можете воспользоваться этим закрытием для глобальной установки/демонтажа (для этого тест только люкс):
var myServer = require('./myservermodule');
var testsRun = 0;
var testsExpected = 3;
function startTest(test) {
test._reallyDone = test.done;
test.done = function() {
++testsRun;
test._reallyDone();
};
}
module.exports = {
'setUp' : function(cb) {
if (!myServer.server) myServer.start(cb);
else cb();
},
'tearDown' : function(cb) {
console.log("Tests run: " + testsRun + "/" + testsExpected);
if (testsRun===testsExpected) myServer.stop(cb);
else cb();
},
'sometest1' : function(test) {
startTest(test);
test.expect(1);
test.ok(true);
test.done();
},
'sometest2' : function(test) {
startTest(test);
test.expect(1);
test.ok(false);
test.done();
},
'sometest3' : function(test) {
startTest(test);
test.expect(1);
test.ok(true);
test.done();
}
};
Есть два способа сделать это:
Все тесты в тестовом файле nodeunit выполняются последовательно и синхронно. Вы можете поместить код установки для этой группы тестов в первый тест, а затем отрыв в последнем тесте.
Если вы хотите сделать это более формально, и если вы не хотите настраивать Grunt для модульного теста, есть также модуль под названием «nodeunit-async», который позволит вам запускать глобальную настройку и разрывы до и после всех ваших испытаний. Вы можете запустить глобальную настройку и разрывы один раз до и после группы тестов.
Вот краткий текст для nodeunit-асинхронном:
Легкая обертка для запуска асинхронных тестов nodeunit. Особенно полезно, когда вы хотите, чтобы общие функции глобальной настройки или разрыва запускались для каждого теста в нескольких файлах, и/или функции установки или разблокировки прибора выполнялись один раз до и после всех тестов.
Предназначен для модульных испытаний, написанных с использованием методов автоматического и водопада async.
- 1. Ошибка установки узла в узле (socket.io)
- 2. Поиск .NET-кода, охватываемого исключительно набором тестов
- 3. Запуск тестовой установки перед всеми тестами
- 4. Запуск установки Mocha перед каждым набором, а не перед каждым тестом
- 5. Перенос базы данных в память sqlite перед набором тестов
- 6. Запуск некоторых тестов до установки rpm
- 7. Запуск кода перед всеми тестами внутри CEST
- 8. Запуск произвольного кода в ожидании обратного вызова в узле?
- 9. Выполнение мокко-тестов с узла
- 10. wix: запуск внешнего msi перед началом установки
- 11. Запуск 2 наборов тестов junit с разными настройками @ перед настройкой
- 12. Запуск тестов в определенном порядке
- 13. Запуск кода node.js просто отображает идентификатор узла
- 14. Запуск кода узла-js внутри angular2 app
- 15. JavaFX: Обработка узла в узле
- 16. Ошибка установки узла установки
- 17. Запуск пользовательского кода после установки обновления NBM
- 18. Модуль узла узла перед его распределением
- 19. Тайм-аут установки ошибки в узле js
- 20. Запуск тестов Jasmine
- 21. Запуск тестов Django в PyCharm
- 22. Запуск тестов, затронутых изменениями кода, сначала в TeamCity
- 23. Запуск тестов NUnit в Visual Studio 2010 с охватом кода
- 24. Запуск кода до и после всех тестов в правильном выполнении
- 25. Запуск задач Grunt в узле
- 26. Запуск тестов PHPUnit при изменении
- 27. Запуск инструкции db перед южными миграциями при запуске тестов django
- 28. Запуск Гинкго набор тестов (установка BeforeSuite перед любой спецификации побежал
- 29. Интеграция Allure с многомодульным набором тестов
- 30. Запуск параллельных тестов с селеном водосвинкой
Следовало сделать более четкими, но, как в ссылке, что я пытаюсь сделать, это есть набор перед всеми испытаниями, не каждый тест. –
А я вижу. Прошу прощения за путаницу. Как сказал Брэд, тогда Грант - хороший выбор. – tfogo