Проблема
У меня есть несколько тестов, которые делают то же самое в мокко. Это для меня, это дублирование, и это худшее, что нужно сделать, когда вы хотите, чтобы ваша система была поддающейся поддержке.
var exerciseIsPetitionActive = function (expected, dateNow) {
var actual = sut.isPetitionActive(dateNow);
chai.assert.equal(expected, actual);
};
test('test_isPetitionActive_calledWithDateUnderNumSeconds_returnTrue', function () {
exerciseIsPetitionActive(true, new Date('2013-05-21 13:11:34'));
});
test('test_isPetitionActive_calledWithDateGreaterThanNumSeconds_returnFalse', function () {
exerciseIsPetitionActive(false, new Date('2013-05-21 13:12:35'));
});
Что мне нужно
Мне нужен способ свернуть мои дублированные тесты мокко только в одном.
Например, в PhpUnit (и других тестовых средах) вы dataProviders.
В phpUnit dataProvider работает следующим образом:
<?php class DataTest extends PHPUnit_Framework_TestCase {
/**
* @dataProvider provider
*/
public function testAdd($a, $b, $c)
{
$this->assertEquals($c, $a + $b);
}
public function provider()
{
return array(
array(0, 0, 0),
array(0, 1, 1),
array(1, 0, 1),
array(1, 1, 3)
);
}
}
Поставщик здесь вводит параметры в тест, а тест выполняет все случаи. Идеально подходит для повторного тестирования.
Я хочу знать, есть ли в мокке что-то подобное, например, что-то вроде этого:
var exerciseIsPetitionActive = function (expected, dateNow) {
var actual = sut.isPetitionActive(dateNow);
chai.assert.equal(expected, actual);
};
@usesDataProvider myDataProvider
test('test_isPetitionActive_calledWithParams_returnCorrectAnswer', function (expected, date) {
exerciseIsPetitionActive(expected, date);
});
var myDataProvider = function() {
return {
{true, new Date(..)},
{false, new Date(...)}
};
};
То, что я уже рассмотрел
Существует несколько tecnique, которые называются Общие действия. Но он не решает проблему напрямую с помощью тестового набора, он просто решает проблему с разными компонентами, которые имеют дублированные тесты.
Вопрос
Знаете ли вы какой-либо способ реализовать dataProviders в мокко?