bdd – 如何在Emberjs上对视图绑定和模板进行单元测试?

我正试图以TDD / BDD的方式进入ember,我想知道你如何单元测试模板绑定或查看绑定?

如果应该对所有车把模板进行测试,那么测试车把模板的最佳做法是什么?

谢谢,
夏嘉曦

解决方法

我没有找到任何人直接谈论这个主题,所以我写了 a post about my findings.

我还开辟了一个新的开源项目,专门用于测试名为emberjs-tdd的emberjs应用程序

基本上我所做的是使用View.$()函数来测试我的模板元素是否连接到我的视图,对于绑定我使用了模拟数据注入,然后将我的输入值与模拟数据进行比较.

就像是:

describe("Given a login view it",function(){
    var loginView = null;

    beforeEach(function(){
        loginView = LoginView.create();

        Ember.run(function(){
            loginView.append();
        }); 
    });

    afterEach(function(){
        Ember.run(function(){
            loginView.remove();
        });
        loginView = null;
    });


    it("Should be defined",function(){
        expect(loginView).toBeDefined();
    });

    it ("Should have a user property",function(){
        expect(loginView.get("user")).toBeDefined();
    });

    describe("Should have a template and it",function(){

        it("Should have an user input",function(){
            expect(loginView.$("input.userInput").length).toEqual(1);
        });

        it("Should bind the username input value to the user.name property",function(){
            Ember.run(function(){
                loginView.set("user",Em.Object.create({name:"mockValue"}));
            });
            expect(loginView.$("input.userInput").val()).toEqual("mockValue");  
        });

        it("Should have a login button",function(){
            expect(loginView.$("button.loginButton").length).toEqual(1);
        });


    });

});

我的观看代码是:

define(["text!templates/LoginView.handlebars","ember"],function(LoginTemplate){
 var loginView = Em.View.extend({
    template: Em.Handlebars.compile(LoginTemplate),user: null
 });
 return loginView;
});

我的模板:

{{view Ember.TextField class="userInput" valueBinding="user.name"}}
<button class="loginButton">Login</button>

同样,完整的项目可以在emberjs-tdd项目中找到,所以请尽可能免费将您的发现贡献给这个项目,这样我们就可以更好地了解如何有效地完成这些工作.

相关文章

事件冒泡和事件捕获 起因:今天在封装一个bind函数的时候,发现el.addEventListener函数支持第三个参数...
js小数运算会出现精度问题 js number类型 JS 数字类型只有number类型,number类型相当于其他强类型语言...
什么是跨域 跨域 : 广义的跨域包含一下内容 : 1.资源跳转(链接跳转,重定向跳转,表单提交) 2.资源...
@ &quot;TOC&quot; 常见对base64的认知(不完全正确) 首先对base64常见的认知,也是须知的必须有...
搞懂:MVVM模式和Vue中的MVVM模式 MVVM MVVM : 的缩写,说都能直接说出来 :模型, :视图, :视图模...
首先我们需要一个html代码的框架如下: 我们的目的是实现ul中的内容进行横向的一点一点滚动。ul中的内容...