如何使用qunit对ember-cli app中的路由进行单元测试?

时间:2014-10-15 13:16:53

标签: javascript unit-testing ember.js ember-cli

我似乎无法获得从单元测试中触发的模型钩子和动作。

任何做这个ember-cli环境的样本/博客都会有很大的帮助!

我找到了这个链接 What kind of unit test solution for the routes in 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");
    }
});

1 个答案:

答案 0 :(得分:1)

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

不幸的是,我还没有找到一种好的单元测试路径。如果您有需要测试的特定beforeModel逻辑,那么您可以直接拨打beforeModel吗?我发现Route逻辑最好通过验收样式测试进行测试,因为您可以按照应用程序实际运行时的方式调用Route。