使用数据工厂插件的对象模拟

Object mock using data factory guy addon

我是 Embebr js 的新手,使用 ember-data-factory 插件来模拟 ajax 响应但是在模拟下面的响应时遇到问题。

 {
      "employee/profile": {
        "id": 60799,
        "gender": "Male",
        "fname": "Mick",
        "lname": "Hussey",
        "addresses": [
          "50345"      
        ]   
      },
      "employee/addresses": [
        {
          "id": "50345",
          "addressState": "GA",
          "zip": "30004"  
        }     
      ] 

    } 

为了实现这一点,我在 tests/factories/ 目录中创建了配置文件和地址模型。 employee/profile型号

import FactoryGuy from 'ember-data-factory-guy';

FactoryGuy.define('employee/profile', {
  default: {    
    id: 60799,
    gender: 'Male',
    fname: 'Mick',
    lname: 'Hussey',
    addresses:  FactoryGuy.hasMany('employee/address')  
  } 
});

地址模型:

import FactoryGuy from 'ember-data-factory-guy';

FactoryGuy.define('employee/address', {
  default: {   
    id: '50345',
    addressState: 'GA',
    zip: '300014'   
    employee: FactoryGuy.belongsTo('employee/profile'),

  }
});

当我尝试使用下面的代码片段构建配置文件对象时,除了地址之外的所有字段都被填充了。

let profile = this.build('employee/profile');

任何人都可以帮助我了解发生了什么问题。

谢谢 高塔姆

您需要定义如下关系:

addresses:  FactoryGuy.hasMany('employee/address', 1)

通过这种方式,您可以表明您想要一个地址数组,其中只有一个项目。如果省略最后一个,您将得到一个空的地址列表。请在github.

中查看hasMany的源代码

顺便给你准备了一个twiddle,以备不时之需。我不是专家;但我尽力了。您可以在 unit/models/emoloyee/profile-test.js 下检查 profile 模型的工厂定义和单元测试。希望这有帮助。