2013-02-27 79 views
3

我試圖找出如何測試這個javascript函數aduequately使用qunit和mockjax測試與qunit和mockjax

我的JavaScript建立與揭示模塊模式,即時通訊新的單元測試,所以這是一種推動我在牆上

my.someMethod = function (someId, completedHandler) { 
     $.ajax({ 
      dataType: "json", 
      url: my.someUrl, 
      traditional: true, 
      data: { 
       someId : someId 
      }, 
      success: function() { 

       if (completedHandler !== undefined) { 
        completedHandler(); 
       } 
      } 
     }); 
    }; 

像我想要的是正確的,確保了ajax被稱爲等

回答

2

如何,以測試是否使用了正確的網址,如果傳遞的ID關於這一點,終於想出了自己。

結構它somethng像這樣

在你的JavaScript方法

my.someMethod = function (someId, completedHandler) { 
     $.ajax({ 
      dataType: "json", 
      url: my.someUrl, 
      traditional: true, 
      data: { 
       someId : someId 
      }, 
      success: function (data) { 

       if (completedHandler !== undefined) { 
        completedHandler(someId, my.someUrl, data.testResult); 
       } 
      } 
     }); 
    }; 

設置您mockjax

$.mockjax({ 
      url: "someActualUrl", 
      dataType: 'json', 
      responseText: 
       { 
        testResult: 'AJAX Called'       
       } 
     }); 

而在你實際qunit測試現在

test("someMethod calls ajax", function() { 

     namespace.someMethod("id1", 
      function (someId, someUrl, someTestResult) { 
       test("someMethod ajax test", function() { 

        assert.strictEqual(someId, "id1"); 
        assert.strictEqual(someUrl, "someActualUrl"); 
        assert.strictEqual(someTestResult, "AJAX Called"); 
      }); 

     start(); 
    }); 

    ok(true, "Ajax Called"); 
}); 
+2

可以接受答案讓它對別人有用! – hop 2013-02-27 19:50:14