我有一個使用jQuery構建的動態頁面。 HTML片段從mustache模板加載。這些模板是從網址下載,我想單元測試整體的HTML結構:如何使用JsTestDriver測試jquery和ajax調用?
的JsTestDriver測試:
AppTest = TestCase("AppTest")
AppTest.prototype.test = function() {
var actualHtml = "";
getHtml({ "title": "title", "header": "header", "text": "text", "authors": [ {"firstname": "firstname", "lastname": "lastname"} ] }, function(html) {
actualHtml = html;
});
assertEquals("expected html", actualHtml);
};
,代碼:
function getHtml(json, resultFunc) {
jQuery.ajax({
url: "url/to/mustache/template",
success: function(view) {
resultFunc(mergeArticleModelAndView(json, view));
},
error: function(jqXHR, textStatus, errorThrown) {
resultFunc(textStatus + " errorThrown: " + errorThrown);
},
dataType: 'text',
async: false
});
}
然後我啓動測試和結果是:
$ java -jar JsTestDriver-1.3.2.jar --port 9876 --browser /usr/bin/firefox --tests all
F
Total 1 tests (Passed: 0; Fails: 1; Errors: 0) (8,00 ms)
Firefox 5.0 Linux: Run 1 tests (Passed: 0; Fails: 1; Errors 0) (8,00 ms)
AppTest.test failed (8,00 ms): AssertError: expected "expected html" but was "error errorThrown: [Exception... \"Component returned failure code: 0x80004005 (NS_ERROR_FAILURE)\" nsresult: \"0x80004005 (NS_ERROR_FAILURE)\" location: \"JS frame :: http://localhost:9876/test/main/js/jquery.min.js :: <TOP_LEVEL> :: line 16\" data: no]"
()@http://localhost:9876/test/test/js/app_test.js:25
所以錯誤回調已被調用,a第二,我不明白爲什麼它JsTestDriver打破,並用瀏覽器
最後一件事,在jsTestDriver.conf手動調用應用程序時的代碼工作:
server: http://localhost:9876
load:
- test/js/app_test.js
- main/js/jquery.min.js
- main/js/jquery.mustache.js
- main/js/app.js
謝謝您的建議。更一般地說,你使用什麼單元測試框架進行JavaScript和使用DOM和jQuery的命令行測試?
我用[茉莉](https://github.com/pivotal/jasmine)。我不會通過命令行執行它們,但有一些插件可以做到這一點。我喜歡茉莉花,它是否生成類似散文的測試代碼。你可以嵌套你的測試。還有一個jQuery的插件,但沒有它我很好。 –