另一种方法是让JsTestDriver为您的模板和一些测试JSON数据提供服务.下面的配置允许您将src / test / webapp / json中的静态JSON测试数据(例如my_data.json)和src / main / webapp / templates中的Mustache模板.你可以改变它以匹配你的源布局,如果这对你的口味太Maven-y.
请注意,JsTestDriver使用/ test / pre-pended为serve属性中指定的URI提供资源,因此src / test / webapp / json / my_data.json实际上是从http:// localhost:9876 / test / src /提供的测试/ web应用/ JSON / my_data.json.
server: http://localhost:9876
serve:
- src/main/webapp/templates/*.html
- src/test/webapp/json/*.json
load:
- src/main/webapp/js/*.js
- src/main/webapp/js/libs/*.js
test:
- src/test/webapp/js/*.js
然后,在测试用例中,您可以轻松加载模板和JSON数据.
testLoadTemplateAndData : function () {
// Variables
var onComplete,template,data,expected,actual,templateLoaded,dataLoaded;
dataLoaded = false;
templateLoaded = false;
expected = "
// Completion action
onComplete = function () {
if (dataLoaded && templateLoaded) {
// Render the template and data
actual = Mustache.to_html(template,data);
// Compare with expected
assertEquals('Markup should match',actual);
}
};
// Load data with jQuery
$.ajax({
url : '/test/src/test/webapp/json/demo.json',success :
function (result) {
data = result;
dataLoaded = true;
},error :
function () {
fail("Data did not load.");
},complete :
function () {
onComplete();
}
}
);
// Load the template with jQuery
$.get('/test/src/main/webapp/templates/demo.html',function(result) {
template = result;
templateLoaded = true;
}
)
.error(function() { fail("Template did not load."); })
.complete(function() {
onComplete();
});
}
当两个jQuery回调都完成时,Mustache应该使用JSON数据解析模板并呈现预期的输出.