1

저는 약간 비슷한 모양의 조명기를 만듭니다.수락 테스트에서 Ember mirage fixture를 수정할 수 없습니다.

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

내 수용 테스트에서는이 배열을 사용하고 있습니다. 나는 모든 datas를 동적으로 생성 할 해달라고으로 공장을 사용하려는 해달라고, 그래서 나는이 먹고 싶어 :하지만 내 테스트에서, 나는 다른 개체에게

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

주를이 백성 배열을 수정하고 추가한다고 가정 할 조명기에서 배열, 내 새 개체를이 배열로 밀어 넣은 다음 반환하십시오. 올바른 방법은 무엇입니까?

Note2 : 필자는 테스트의 조건에 따라 조명기에 항목을 동적으로 추가하려고하기 때문에이 객체를 조명기 자체에 추가 할 것을 제안하지 마십시오.

+1

나는 약간 혼란 스럽다. 어떤 신기루 버전을 사용하고 있습니까? AFAIK'server.create'는 공장에서만 사용됩니다. 조명기 데이터를로드하려면 ['server.loadFixtures()'] (http://www.ember-cli-mirage.com/docs/v0.3.x/configuration/#loadFixtures)를 실행해야합니다 –

+0

안녕하세요 @RamyBenAroya , 내 config.js에 신기한 짓을하고있다. '/ mirage/fixtures/people'에서 가져 오기 peopleFromFixture, ' 'this.get ('/ people ', (schema, request) => {{ 'return peopleFromFixture; ' '})' – Siwalik

+0

이것은 틀린 것 같습니다. 신기루 DB에 모델을 만들지 마십시오. 당신은 기본적으로'/ mirage/fixtures/people'에 내 보낸 객체 인 사람들을위한 작은 db를 만들었습니다. –

답변

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' });