Как написать параметризованные тесты с использованием модульной системы тестирования Jasmine (или любой другой другой среды тестирования JavaScript BDD)?Как написать параметризованный тест с помощью Jamine?
0
A
ответ
1
AFAIK Jasmine не имеет поддержки параметризованных тестов. Так что я придумал этот простой подход:
describe('Testing module', function() {
var testCases = [
{ param1: 'testcase1Param1', param2: 'testCase1Param2'},
{ param1: 'testcase2Param1', param2: 'testCase2Param2'},
];
/*jshint -W083 */ //Disable warning for function created inside loop
//this is parametrized test and it's better readable this way.
testCases.forEach(function(testCase) {
describe('for test case: param1" ' + testCase.param1 +
' and param2: "' + testCase.param2 + '"', function() {
//do your testing
}
}
});
0
Вдохновленный этим,
- https://github.com/desirable-objects/neckbeard.js/blob/master/src/neckbeard.js
- https://github.com/FrankyBoy/jasmine-params/blob/master/lib/jparams.js
- https://www.npmjs.com/package/jasmine-params
я написал что-то, чтобы получить это (параметры не позиционный):
describe('sum()', function() {
helper.executeTestCases({
description: 'given values #param1 and #param2 should return #result',
values: [
{ param1: 1, param2: 2, result: 3}
,{ param2: 5, result: 7, param1: 2}
],
test: function(param1, param2, result){
expect(param1 + param2 /*your code here*/).toEqual(result);
}
});
});
Это WIP, но это здесь:
var helper = (function Helper(){
var STRIP_COMMENTS = /((\/\/.*$)|(\/\*[\s\S]*?\*\/))/mg;
var ARGUMENT_NAMES = /([^\s,]+)/g;
function getParamNames(func) {
var fnStr = func.toString().replace(STRIP_COMMENTS, '');
var result = fnStr.slice(fnStr.indexOf('(')+1, fnStr.indexOf(')')).match(ARGUMENT_NAMES);
return result || [];
};
/*
given the string "this is a #one" an the values {one:"test"} it returns "this is a test"
*/
function createDescription(description, values){
var placeHolders = description.match(/(#\w+)/g);
if(!placeHolders) throw Error("Fail to recognize placeHolders in test description (" + description + ").");
placeHolders.forEach(function(placeHolder, index){
var newValue = values[placeHolder.substr(1)]; // remove the "#"
description = description.replace(placeHolder, newValue);
});
return description;
};
return {
executeTestCases: function(params){
params.values.forEach(function(element, index){
var description = createDescription(params.description, element);
var paramNames = getParamNames(params.test);
var parameters = [];
paramNames.forEach(function(name){
if(!element.hasOwnProperty(name)) throw new Error('Element "' + name +'" not found in row #' + (index+1) + '" of test case values."');
parameters.push(element[name]);
});
return it(description, function(){
params.test.apply(null, parameters);
});
});
}
};
})();
Алессандро
Смежные вопросы
- 1. Жасмин параметризованный модульный тест
- 2. Параметрированный параметризованный тест или параметризованный набор с до и после
- 3. Как написать параметризованный SQL-запрос?
- 4. Как написать модульный тест с помощью Mockito
- 5. Спки: параметризованный тест в цикле
- 6. Как передать Guid.Empty в параметризованный модульный тест?
- 7. Как отключить параметризованный тест Googletest (gtest)?
- 8. Как написать параметризованный запрос в студии управления?
- 9. CPPUnit Как написать тест?
- 10. Как написать этот интеграционный тест
- 11. Как определить параметризованный мультиплексор с помощью SystemVerilog
- 12. Как написать свой первый серьезный тест с помощью MSpec?
- 13. Как правильно написать строгий модульный тест с помощью jUnit?
- 14. Как написать тест для метода в Laravel с помощью phpspec
- 15. Как написать тест для директив
- 16. Как написать интеграционный тест с базой данных
- 17. Как написать тест интеграции golang с MySQL
- 18. Как написать тест mocha с массивом результатов?
- 19. Как написать тест JUnit с Spring Autowire?
- 20. Как написать единичный тест с использованием макета?
- 21. Как написать функциональный тест с аутентификацией пользователя?
- 22. Как написать тест в огурце?
- 23. Как написать тест в Джанго
- 24. Как написать параметризованный псевдоним Bash для команды Docker
- 25. Как запустить общий параметризованный тест JUnit в Eclipse?
- 26. Какой тест написать?
- 27. Как написать параметризованный SQL-запрос, чтобы предотвратить SQL-инъекцию?
- 28. Как написать тест, чтобы отправить JSON в @RequestBody метод, с помощью Spring MVC тест
- 29. Как написать параметризованный запрос для вставки нескольких строк в таблицу?
- 30. Как написать тест для parseFile в Go