3

Node.js単体テストで、データドリブンを作成する方法は何ですかunit tests?

たとえば、私は common を持っています。これfunction / methodは、異なるデータ セットを使用して複数の単体テストで再利用したいと考えています。調べてみましたnodeunit, vows, whiskey, qunit, expresso; しかし、この機能を実現する方法を見つけることができませんでした。

複数のテストで文字通り関数を呼び出すのではなくmethod、ループ内で共通を使用して、各反復でデータを取得し、それを実行します。unittest

この理由は、少なくとも 1000 行のパラメーター化されたデータを書きたいためunittestです。unittests明らかに、物理的に 1000 を書き続けることはできません。

上記を達成する方法を教えてください。

4

2 に答える 2

3

パラメータ化された quint テストを実行できる qunit アドオンがあります
https://github.com/AStepaniuk/qunit-parameterize

したがって、テスト データテスト メソッドを分離し、異なるデータ セットに対して同じテスト メソッドを実行できます。

于 2012-11-17T03:51:47.980 に答える
2

これはかなり古い投稿ですが、私は自分でこの問題にぶつかっただけで、他のコメント (qunit-parameterize) で参照されているプラ​​グインを使用せずに QUnit のクリーンなソリューションを見つけることができませんでした。正直なところ、プラグインを会社のプロジェクトに統合する方法がわかりませんでした。約 1 時間後にあきらめました。

これが私がそれを解決した方法です:

入力 (および必要に応じて期待される出力) を含む配列を定義し、配列を反復処理して、コールバックで QUnit テストを定義するだけです! 非常にシンプルですが、非常にうまく機能しました。

const testCases = [
    { input: "01/01/2015", expected: "2015-01-01" },
    { input: "09/25/2015", expected: "2015-09-01" },
    { input: "12/31/2015", expected: "2015-12-01" }
];

testCases.forEach(testCase => {
    QUnit.test("gets first of month",
    () => {
        const actual = new classUnderTest().getFirstOfMonth(testCase.input);
        strictEqual(actual, testCase.expected);
    });
});

そのようにネストされている場合、QUnitがテストを検出するかどうかはわかりませんでしたが、問題なく動作します。

楽しみ!

于 2016-11-04T20:06:04.523 に答える