1

私はこれと少し似たようなフィクスチャーを作成しています。受け入れテスト内からEmberミラージュフィクスチャーを変更できません

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

私はこの配列を使用しています。私は、すべての件のデータを動的に生成することにしたいいけないようファクトリを使用したくないので、私はこれをしたい:しかし、私のテスト中に、私はこの人の配列を変更し、追加し、別のオブジェクトに

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

注意を仮定したいですこの配列に新しいオブジェクトをプッシュして返します。それを行う正しい方法は何ですか?

注2:テスト中の条件に基づいてフィクスチャにアイテムを動的に追加したいので、このオブジェクトをフィクスチャ自体に追加することはお勧めしません。

+1

私は少し混乱しています。どのミラージュバージョンを使用していますか? AFAIK 'server.create'は工場でのみ使用されます。 Fixtureデータをロードするには、['server.loadFixtures()'](http://www.ember-cli-mirage.com/docs/v0.3.x/configuration/#loadFixtures)を実行する必要があります –

+0

こんにちは@RamyBenAroya 、私のconfig.jsミラージュのために、私はやっている '/ミラージュ/フィクスチャ/人'からのインポートpeopleFromFixture; 'this.get( '/ people'、(スキーマ、リクエスト)=> {{ 'return peopleFromFixture;' '});' – Siwalik

+0

これは間違っています。ミラージュのデータベースにモデルを作成することはありません。あなたは基本的に '/ mirage/fixtures/people'にエクスポートされたオブジェクトである人のための独自の小さなデータベースを作成しました。 –

答えて

1

これはかなり簡単です。蜃気楼の設定では、代わりに工場からデータを読み込み、server.loadFixtures('people')でオリジナルの金具値を移入この

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

をやっていないべきで

だから、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' }); 
関連する問題