无法在验收测试中修改Ember海市蜃楼夹具

时间:2017-05-23 17:04:42

标签: ember.js ember-data fixtures ember-testing ember-cli-mirage

我有一个看起来有点像这样的夹具。

// mirage/fixtures/people.js
 export default {
      'people': [
        {
          'id': 1,
          'name': 'Ram',
         },
         {
          'id': 2,
          'name': 'Raja',
         }
       ]
    }

在我的验收测试中,我正在使用这个数组。但在我的测试中,我想修改这个人数组并添加,假设另一个对象

{
   'id': 3,
   'name': 'John',
}

注意:我不想使用工厂,因为我不希望动态生成所有数据,因此我想从fixture中获取此数组,将我的新对象推入此数组然后返回它。这样做的正确方法是什么?

注意2:不建议在灯具本身添加此物体,因为我想根据测试中的条件动态地将物品添加到灯具中。

1 个答案:

答案 0 :(得分:1)

这非常简单。在海市蜃楼配置中,我们不应该这样做

// import peopleFromFixture from '/mirage/fixtures/people'; 
// this.get('/people', (schema, request) => {  
// return peopleFromFixture;  }); 

而是从工厂读取数据并使用server.loadFixtures('people')填充原始夹具值。

所以config.js看起来像=>

this.get('/people'); 

像这样设置你的工厂=>

import { Factory } from 'ember-cli-mirage';
export default Factory.extend({
  id(i) {  return i+1; },
  name() { return faker.name.findName(); }
});

在测试用例中,填充原始值和新值,例如this =>

server.loadFixtures('people');
server.create('people', { name: 'John' });