1

コード:

var buster = require('buster'),
    NumberCruncher = require('../src/NumberCruncher');

buster.testCase('Number Cruncher', {
    setUp: function() {
        this.numberCruncher = new NumberCruncher();
    },
    tearDown: function() {
        delete this.numberCruncher;
    },
    'constructor returns numberCruncher': function() {
        assert(this.numberCruncher instanceof NumberCruncher);
    },
    'object constructor correct': function() {
        assert.equals(this.numberCruncher.constructor, NumberCruncher);
    },
    'can add numbers': function() {
        buster.assert.equals(this.numberCruncher.add(5,3), 8, 'NumberCruncher cannot add');
    }
});

バックグラウンド:

ではsetUp、オブジェクトを作成し、this(テストケース) のプロパティとして設定しています。で、tearDown上記のプロパティを削除しています。

質問:

メソッドでオブジェクトのプロパティを削除することの背後にある考えや理由を説明しなければならないとしたらtearDown、何と答えますか? なぜこれが良いことなのですか?メリットはありますか?本当に大きなオブジェクトにスケーリングした場合にのみメリットがありますか?

私の考え:

私の推論 (これは間違っているかもしれません) は、各テストの実行後にガベージ コレクションを保証しているということです。

4

1 に答える 1

2

ガベージ コレクションが保証されているかどうかは関係ありません。さらに重要なことは、値を既知の状態 (この場合は未定義) にリセットすることです。これにより、最後のテスト ケースのダーティ データによって偽陽性または偽陰性のテスト ケースが作成される可能性がなくなります。

于 2012-09-02T22:19:41.680 に答える