如何使用qunit在ember-cli应用程序中对Routes进行单元测试



我似乎无法获得单元测试触发的模型挂钩和操作。

任何在ember-cli环境中执行此操作的示例/博客都将是一个很大的帮助!

我找到了这个链接Ember.js中路由的单元测试解决方案是什么?

但是route.model()正在抛出错误:transition未定义。

import { test, moduleFor } from 'ember-qunit';
moduleFor('route:sample', 'SampleRoute', {
  // Specify the other units that are required for this test.
});
test("beforeModel hook works", function(){
    var route = this.subject();
    Ember.run(function(){
        route.set("model", "Sample data");
    })
    console.log("Model set. Was beforeModel hook called?");
});

样品路线

import Ember from 'ember';
export default Ember.Route.extend({
    beforeModel: function (transition) {
        console.log("Inside before-model hook");
    },
    afterModel: function() {
        console.log("In after-model hook");
    }
});

不幸的是,事情并非如此。在设置model之前不简单地调用beforeModel,而在设置之后调用afterModel。它们只是在该序列(beforeModel -> model -> afterModel)中被调用的钩子,作为路由生命周期的一部分。

不幸的是,我还没有找到一个好的方法来对Routes进行单元测试。如果您有特定的beforeModel逻辑需要测试,那么也许您可以直接调用beforeModel?我发现Route逻辑最好通过验收样式测试进行测试,因为这样就可以像实际运行应用程序时一样调用Route。

最新更新