【问题标题】:Unable to modify Ember mirage fixture from within acceptance test无法从验收测试中修改 Ember mirage 夹具
【发布时间】:2017-10-23 18:31:48
【问题描述】:

我有一个夹具创建,看起来有点像这样。

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

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

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

注意:我不想使用工厂,因为我不想动态生成所有数据,所以我想从固定装置中获取这个数组,将我的新对象推送到这个数组中,然后返回它。正确的做法是什么?

注意2:不建议在fixtures本身中添加这个对象,因为我想根据测试中的条件动态地将item添加到fixtures中。

【问题讨论】:

  • 我有点困惑。您使用的是哪个 Mirage 版本? AFAIK server.create 仅用于工厂。为了加载夹具数据,您应该运行 server.loadFixtures()
  • 嗨@RamyBenAroya,在我的海市蜃楼的config.js中,我正在做import peopleFromFixture from '/mirage/fixtures/people';this.get('/people', (schema, request) => {`return peopleFromFixture;``});`
  • 这听起来不对。您永远不会在 mirage db 中创建模型。您基本上为人们创建了自己的小型数据库,这是/mirage/fixtures/people 中的导出对象。
  • @RamyBenAroya 抱歉,确实我没有使用 server.create 作为夹具。我的错,我现在已经编辑了问题,但我原来的问题仍然存在。

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


【解决方案1】:

这很简单。在 mirage 配置中,我们不应该这样做

// 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(); }
});

在您的测试用例中,像这样填充原始值和新值 =>

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多