問題
モカで同じことを行ういくつかのテストがあります。私にとってこれは重複であり、システムを保守可能にしたい場合に行うのは最悪のことです。
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'));
});
私が必要なものは何
重複したモカ テストを 1 つだけに折りたたむ方法が必要です。
たとえば、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(...)}
};
};
私がすでに見たもの
Shared Behaviorsと呼ばれるテクニックがあります。ただし、テスト スイートで問題を直接解決するのではなく、テストが重複しているさまざまなコンポーネントで問題を解決するだけです。
質問
モカで dataProviders を実装する方法を知っていますか?