测试 ember 嵌套路由失败

标签 testing ember.js qunit karma-runner

我正在使用 karma 和 qUnit(在遵循 this tutorial 之后)来测试我的 Ember 应用程序。大部分情况下进展顺利,但我遇到了一个没有意义的问题。

给定以下 2 个测试:

test('can get to products', function() {
  visit('/products/')
    .then(function() {
      ok(find('*'));
    });
});


test('can get to catalogues', function() {
  visit('/products/catalogues')
    .then(function() {
      ok(find('*'));
    });
});

第一个会运行良好。测试运行器到达 /products 并找到一些东西。

但是,第二个测试在控制台中返回错误:

Error: Assertion Failed: You have turned on testing mode, which disabled the run-loop's autorun. You will need to wrap any code with asynchronous side-effects in an Ember.run

我打开了转换日志,测试运行器在抛出错误之前正在访问 products.catalogues.index

有什么想法吗?或者它只是 ember 测试工具中的一个错误?

两者都是路由器内部定义的有效路由...

最佳答案

错误的最后一部分是解决此问题的关键。您必须确保进行异步调用的任何代码都包含在 Ember.run 中。这包括像 create 和 set 方法这样简单的事情。

如果你有类似的东西

App.ProductsRoute = Ember.Route.extend({
    model: function() {
        return [
            Ember.Object.create({title: "product1"}),
            Ember.Object.create({title: "product2"})
        ]
    }
});

重构为

App.ProductsRoute = Ember.Route.extend({
    model: function() {
        return [
            Ember.run( Ember.Object, "create", {title: "product1"} ),
            Ember.run( Ember.Object, "create", {title: "product2"} )
        ]
    }
});

App.ProductsRoute = Ember.Route.extend({
    model: function() {
        return Ember.run(function() {
            return [
            Ember.Object.create({title: "product1"}),
            Ember.Object.create({title: "product2"})
            ]
        });
    }
});

如果您发布了您的 /products 代码,那么给出更具体的答案会更容易。

关于测试 ember 嵌套路由失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18784547/

相关文章:

xcode - 创建和分发 Mac App 以进行 Beta 测试的分步流程

django:运行覆盖测试

javascript - Ember : How to determine which property changed in a multi-property observer

ember.js - 链接到 Action 参数在ember js中不起作用

unit-testing - QUnit 与 Jasmine?

frameworks - QUnit的替代品

ruby-on-rails - 分析 cucumber 测试(ruby/rails)

testing - 如何以一对多的方式编写 clojure.test.check 生成器?

ember.js - 从组件内部调用 ember 组件操作

javascript - 在 QUnit 中使用 Mockjax?