为什么在 ember 中测试模型时必须 'need' 所有模型

Why do I have to 'need' all models when testing models in ember

我有三个实体 Token - N:1 - User - N:1 - Company。我让 ember-cli 生成模型测试,但都失败了。这在某种程度上是意料之中的,因为在测试令牌时它应该需要用户所以我将用户添加到需求中。对我来说很奇怪的是为什么我也必须包括公司?我是否必须在每个模型测试中包含我的所有模型?

// tests/unit/models/token-test.js
import {moduleForModel, test} from 'ember-qunit';
moduleForModel('token', {
    needs: ['model:user', 'model:company']
});

test('it exists', function(assert) {
    var model = this.subject();
    // var store = this.store();
    assert.ok(!!model);
});

//models/token.js
user: DS.belongsTo('user')

//models/user.js
tokens: DS.hasMany('token')
company: DS.belongsTo('company')

//models/company.js
users: DS.hasMany('user')

如果没有看到您的模型定义,我无法确定(您介意发布这些吗?),但似乎是因为您的模型之间存在关系。来自 Ember CLI website:

Note: If the model you are testing has relationships to any other model, those must be specified through the needs property.

我猜你的 token 模型与你的 usercompany 模型都有关系。 (或者你的 tokenuser 相关,而 usercompany 相关。)

Ember CLI 的测试目标是让它们尽可能独立,因此它不会为您加载任何东西 - 您必须声明 all 依赖项.这看起来很痛苦,但它有助于更​​好地进行单元测试。