在 QUnit 测试中重置 KnockoutJS ViewModel

发布于 2024-12-15 03:29:53 字数 258 浏览 3 评论 0原文

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

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

I'm just getting started with Knockout JS and with QUnit for doing unit tests of my knockout view model. The problem that I'm running into is that if I have multiple tests in my qunit test javascript file, and I link to a javascript file which includes my View Model definition... any changes that I make to the View Model in one test are also present when I start the next test in the test module. I'm used to have an NUnit environment where my state is cleared automatically between tests.

Is there a method, pattern or example that someone can point to which shows the best way to define a view model, and have it reset it's state for the start of each unit test?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

半世晨晓 2024-12-22 03:29:53

您是否使用 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 中定义的任何成员都可以在任何后续测试中访问。

Are you using the second parameter (lifecycle) of module? If not, you should be able to instantiate your view model at this level, something like:

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

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

From what I remember reading, QUnit tets are run in the same scope as setup and tearDown, so any members defined in setup will be accessible within any subsequent tests.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文