Tôi có trang động được tạo bằng jQuery. Các mẩu Html được tải từ các mẫu mustache. Các mẫu này được tải xuống từ một url, và tôi muốn đơn vị kiểm tra việc xây dựng html tổng thể:Làm thế nào để kiểm tra các cuộc gọi jquery và ajax bằng JsTestDriver?
Các thử nghiệm JsTestDriver là:
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);
};
Và mã:
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
});
}
Sau đó, tôi khởi động các thử nghiệm và kết quả là:
$ 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
Vì vậy, lỗi gọi lại đã được gọi, nd Tôi không hiểu tại sao nó phá vỡ với JsTestDriver, và mã hoạt động khi gọi ứng dụng bằng tay với một trình duyệt
Điều cuối cùng, các 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
Cảm ơn bạn cho lời khuyên của bạn. Nói chung, bạn sử dụng khung kiểm thử đơn vị nào để kiểm tra javascript và dòng lệnh với DOM và jQuery?
tôi sử dụng [Jasmine] (https://github.com/pivotal/jasmine). Tôi không thực hiện chúng thông qua dòng lệnh, nhưng có một số bổ sung để làm điều đó. Những gì tôi thích về Jasmine, là nó tạo ra mã thử nghiệm giống như văn xuôi. Và bạn có thể lồng các bài kiểm tra của mình. Có một plugin cho jQuery, nhưng tôi ổn mà không có nó. –