在QUnit测试中重置KnockoutJS ViewModel

时间:2011-11-10 19:34:31

标签: javascript unit-testing knockout.js qunit

我刚刚开始使用Knockout JS和QUnit来完成我的淘汰视图模型的单元测试。我遇到的问题是,如果我在我的qunit测试javascript文件中有多个测试,并且链接到包含我的View Model定义的javascript文件...我在一次测试中对View Model进行的任何更改当我在测试模块中开始下一个测试时,也会出现。我习惯有一个NUnit环境,我的状态会在测试之间自动清除。

是否有人可以指向的方法,模式或示例显示定义视图模型的最佳方法,并让它重置每个单元测试开始的状态?

1 个答案:

答案 0 :(得分:2)

您使用module的第二个参数(生命周期)吗?如果没有,您应该能够在此级别实例化您的视图模型,例如:

module("foo", {
    setup: function() {
        this.model = instantiateModel();
    },
    tearDown: function() {
        // execute reset here
    });

test("bar", function() {
    ok(this.model.hasSomething() !== null, "msg");
});

根据我记得的内容,QUnit tets的运行范围与setuptearDown相同,因此setup中定义的任何成员都可以在任何后续测试中访问。