我在项目中使用Ember的早期阶段。到目前为止,我对它开启的可能性感到非常兴奋!
我们正在编写their docs中所述的集成测试。我们还计划在需要的后期(组件,控制器,视图等)对各种事物进行单元测试。
但是,现在我们只有一个模型绑定的基本模板。出于说明的目的,它可能只是:
<h1>{{title}}</h1>
我们在服务器上预先编译了我们的模板:它们可以在Ember.TEMPLATES
集合中使用。
我们希望使用绑定到它的模型(在测试中创建)对此模板进行单元测试。我的想法是,我们应该能够在页面上加载应用程序,指定应该在其中呈现模板的页面元素,创建虚拟模型,然后以某种方式将其绑定。到模板,渲染模板,然后做一些jQuery断言。听起来很直接,但我似乎无法轻易找到如何做到这一点。
我已经查看了this post和this这样的帖子,但它们似乎已经过时或处理了观点,我认为我们没有需要这么简单的模板。
有人能指出我正确的方向吗?我是以错误的方式看待这个问题吗?我们按照Ember文档中的建议使用qunit和ember-qunit combi,以防万一。
答案 0 :(得分:4)
您可以随时创建视图并将控制器和模板附加到该视图,然后将其附加到页面并测试绑定是否正常工作。
var controller = Em.ObjectController.create({
model: { title: 'hello'}
});
var fooView = Em.View.create({
container: App.__container__,
templateName: 'foo',
controller: controller
});
// start up the run loop and inject template into the page
Em.run(function(){
fooView.appendTo('#foo');
});
equal(find("h1").length, 1, "h1 is injected");
equal(find("h1").html(), 'hello', "text says hello");
fooView.remove(); // cleanup