灰烬单元测试模板

时间:2014-09-07 21:06:38

标签: unit-testing ember.js qunit

我在项目中使用Ember的早期阶段。到目前为止,我对它开启的可能性感到非常兴奋!

我们正在编写their docs中所述的集成测试。我们还计划在需要的后期(组件,控制器,视图等)对各种事物进行单元测试。

但是,现在我们只有一个模型绑定的基本模板。出于说明的目的,它可能只是:

<h1>{{title}}</h1>

我们在服务器上预先编译了我们的模板:它们可以在Ember.TEMPLATES集合中使用。

我们希望使用绑定到它的模型(在测试中创建)对此模板进行单元测试。我的想法是,我们应该能够在页面上加载应用程序,指定应该在其中呈现模板的页面元素,创建虚拟模型,然后以某种方式将其绑定。到模板,渲染模板,然后做一些jQuery断言。听起来很直接,但我似乎无法轻易找到如何做到这一点。

我已经查看了this postthis这样的帖子,但它们似乎已经过时或处理了观点,我认为我们没有需要这么简单的模板。

有人能指出我正确的方向吗?我是以错误的方式看待这个问题吗?我们按照Ember文档中的建议使用qunit和ember-qunit combi,以防万一。

1 个答案:

答案 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   

http://emberjs.jsbin.com/wipo/45/edit