2017-10-27 2 views
0

Chai와 통합 테스트를하는 동안 문제가 있습니다. 배열에 일부 키가 들어있는 객체가 있는지 확인하고 싶습니다. 이 경우 사용자에게 주소를 추가하고 사용자가 반환 될 때 주소 배열에 원래 전달 된 필드가 포함되어 있는지 확인하고자하지만 MongoDB에 의해 생성 된 ObjectId을 확인하지 않고 확인합니다. 배열 작업에 chai things을 사용했습니다. 내가 확인하고있는 요소는 아래 주장의 형태로 인덱스 0에 있음을 알고Chai 배열에 키가 포함 된 객체가 포함되어 있는지 확인합니다.

나는 작업 솔루션을 가지고

expect(response.body.addresses[0]).to.deep.include({ 
       text: '123, fake street', 
       loc: { 
        type: 'Point', 
        coordinates: [0, 0] 
       } 
}); 

내가 원하는 배열에 포함 된 주장 chai-things을 활용하는 것입니다 위의 주장과 같은 요구 사항을 충족하는 객체.

expect(response.body.addresses).to.contain.something.that.deep.includes({ 
        text: '123, fake street', 
        loc: { 
         type: 'Point', 
         coordinates: [0, 0] 
        } 
}); 

그러나 이것은 실패 : 내가 가지고 올 수있는 가장 가까운 솔루션입니다 AssertionError: expected { Object (text, _id, ...) } to deep include { text: '123, fake street', loc: { type: 'Point', coordinates: [ 0, 0 ] } }

배열에있는 객체의 위치에 의존하지 않고 달성 할 수있는 방법이 있나요?

답변

0

나는 이것을 위해 chai-things도 시도해 보았고 올바르게 할 수 없었다. 테스트 설정에서

chai-subset를 사용하여 종료 :

chai.use(require('chai-subset'))

및 테스트에를

expect(response.body.addresses).to.containSubset([{ 
    text: '123, fake street', 
    loc: { 
    type: 'Point', 
    coordinates: [0, 0] 
    } 
}]) 
관련 문제