2013-02-27 78 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