1

テスト関数の名前に制限はありますか?

以下を と と書くtestA()testB()、両方とも実装されます。

AjaxCreateTest = TestCase("AjaxCreateTest");  
AjaxCreateTest.prototype.testA = function(){};  
AjaxCreateTest.prototype.testb = function(){};

しかし、名前を「testB」から「AjaxCreateT」に変更すると、testA()そのまま実装されます。とても奇妙。誰か助けてくれませんか?

4

1 に答える 1

3

JsTestDriver は、接頭辞「test」で始まるメソッドのみを実行します。これは、テストとして実行されないヘルパー メソッドを同じオブジェクトに記述できるようにするための命名規則です。

各テストの前後にそれぞれ実行される2 つの予約済みメソッド名setUpともあります。tearDown

テスト名にスペースを使用することもできます。これにより、テストが読みやすくなります。次に例を示します。

TestCase("AjaxCreateTest", {
    setUp : function() {
        this.subject = new MyAjaxCode();
        this.stubXHR();
    },

    tearDown : function() {
        this.restoreXHR();
    },

    stubXHR : function() {
        // stub global objects to intercept Ajax calls
    },

    restoreXHR : function() {
        // restore global state
    },

    "test should say hi" : function() {
        assertEquals("Hi", this.subject.sayHi());
    }
}

上記の例では、テストは 1 つだけで、残りはヘルパー メソッドです。

Ajax 呼び出し (「偽の XHR」を参照) をスタブ化するのに役立ち、その他の例については、Sinon.JSをお勧めします。

于 2012-04-28T09:33:49.280 に答える