0

多くのメソッドを次々とテストしたいのですが、1 つのメソッドの出力を次のメソッドに渡す必要があります。

例: add と delete という 2 つのメソッドをテストします。add メソッドの onsuccess は、追加されたオブジェクト (とその ID) を返します。作成されたオブジェクトが削除されるように、削除メソッドに渡したい同じオブジェクト。

exports.add = function(test) {
    nodemanager.add({
        name : 'my name'
    }, function(node) {
        //this is onsuccess callback.
        test.ok(node && node.id, 'Failed to get added node\'s info');
        test.done();
    });
}

exports.del = function(test) {
    //Here i need to pass node object returned from onsuccess on add method.
    nodemanager.del(node, function(node) {
        test.ok(node, 'Deleted node is null');
        test.done()
    });
}

1 つの方法は、これら 2 つの関数の外でノード オブジェクトを定義し、両方のメソッドからアクセスすることです。

これが適切な方法なのか、それともより良いアプローチがあるのか​​ 疑問に思っていました。

4

2 に答える 2

0

テストを互いに分離することは一般的な方法です。ユーザーが任意の順序に依存しないように、ランダムな順序でテストを実行するテスト スイートがあります。

したがって、追加したノードを削除できることを 2 番目のテストで確認する場合は、この要素が使用可能であることを確認する必要があります。おそらく次のようなものです:

exports.add = function(test) {
    nodemanager.add({
        name : 'my name'
    }, function(node) {
        test.ok(node && node.id, 'Failed to get added node\'s info');
        test.done();
    });
}

exports.del = function(test) {
    nodemanager.add({
        name : 'my name'
    }, function(addedNode) {
        nodemanager.del(addedNode, function(deletedNode) {
            test.ok(deletedNode, 'Deleted node is null');
            test.done()
        });
    });
}

もちろん、このソリューションには別の問題があります。nodemanager.add が壊れると、del テストも失敗します。ただし、ここで追加動作をモックするのが難しい場合は、ここで受け入れられると思います。

于 2013-05-26T20:15:00.877 に答える
0

現在、このノードユニット https://github.com/caolan/nodeunit を使用している場合、著者の他のプロジェクト Async ( https://github.com/caolan/async ) を確認してください。ウォーターフォール機能はあなたが探しているものだと思います。同様の回答を探していたので、このページにたどり着いたので、試してみて、どうなるかをお知らせします.

于 2013-12-20T05:32:49.773 に答える