6

Ember-Cli-Mirage でリレーションシップを作成しようとしています。これは簡単な方法で可能ですか、それともファクトリの代わりにフィクスチャを使用する必要がありますか?

これらは私のモデルになります:

仕事:

export default DS.Model.extend({
  taskName: DS.attr('string'),
  team: DS.hasMany('team', {async: true}),
  taskScore: DS.hasMany('taskScore', {async: true})
});

チーム:

import DS from 'ember-data';

export default DS.Model.extend({
  teamName: DS.attr('string'),
  task: DS.hasMany('task'),
  taskScore: DS.hasMany('taskScore', {async: true})
});

タスクスコア:

import DS from 'ember-data';

export default DS.Model.extend({
    score: DS.attr('number'),
    team: DS.belongsTo('team'),
    task: DS.belongsTo('task'),
});
4

1 に答える 1

6

現在、ID を手動で割り当てる必要があります。フィクスチャ ファイルでこれを行うこともできますが、ファクトリを使用することを好みます。テストの柔軟性が少し高まるからです。

単純な属性を割り当てるだけで、ファクトリを定義します。

// app/mirage/factories/task.js
export default Mirage.Factory.extend({
  task_name(i) { return `Task ${i}`; },
});

// app/mirage/factories/team.js
export default Mirage.Factory.extend({
  team_name(i) { return `Task ${i}`; },
});

次に、ファクトリ オーバーライドを使用して、テストでデータを関連付けます。

// tests/acceptance/some-test.js

test('', function() {
  let task = server.create('task');
  server.createList('team', 5, {task_id: task.id});
});

これにより、Mirage データベースに関連データが作成されます。関連付けられたデータを返すようにルートが設定されている場合は、すべて設定されているはずです。

于 2015-08-01T13:46:34.327 に答える