Mam dynamiczną stronę zbudowaną z jQuery. Fragmenty HTML są ładowane z szablonów mustache. Szablony te są pobierane z adresu URL, i chciałbym, aby przetestować urządzenie ogólną budowę HTML:Jak przetestować wywołania jquery i ajax za pomocą JsTestDriver?
Test JsTestDriver jest:
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);
};
I kod:
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
});
}
Potem uruchom Testy i wynik:
$ 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
Tak więc wywołanie zwrotne błędu zostało wywołane, nd Nie rozumiem dlaczego zrywa z JsTestDriver, a kod działa, gdy ręcznie wywołanie aplikacji z poziomu przeglądarki
Ostatnia rzecz, 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
Dziękuję za porady. Bardziej ogólnie, jakie platformy testów jednostkowych używasz do testowania javascript i wiersza poleceń z DOM i jQuery?
użyć [jaśmin] (https://github.com/pivotal/jasmine). Nie wykonuję ich za pomocą wiersza poleceń, ale istnieje kilka wtyczek do tego. To, co podoba mi się w Jasmine, generuje kod testowy prozą. I możesz zagnieździć swoje testy. Istnieje również wtyczka do jQuery, ale bez niej wszystko jest w porządku. –