如何在 ember-cli-mirage 中创建关系?
How do I create a relationship in ember-cli-mirage?
我正在尝试在 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'),
});
目前您需要手动分配 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 数据库中创建相关数据。现在,如果您的路线设置为 return 关联数据,您应该已经准备就绪。
我正在尝试在 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'),
});
目前您需要手动分配 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 数据库中创建相关数据。现在,如果您的路线设置为 return 关联数据,您应该已经准备就绪。