비동기 프로세스가 mongo에 작성한 내용을 검증하기위한 테스트를 작성 중이며 레코드가 포함되어 있는지 확인하기 위해 should.include에 문제가 있습니다. 를 단순화하기 위해, 나의 투사는 단일 필드 (ag_status)를 포함하고 내가해야로부터 다음과 같은 오류가 나타납니다 여기에 should.include를 호출하는 코드의 섹션이Should.js가 배열에 객체를 찾지 못했습니다.
1) Agriculture record should return at least one record with ag_status to true:
Uncaught AssertionError: expected [ { ag_status: true },
{ ag_status: true },
{ ag_status: true },
{ ag_status: true },
{ ag_status: true },
{ ag_status: true } ] to include an object equal to { ag_status: true }
. 나는 chai, chai-fuzzy 및 chai-things를 시도했지만 그 중 누구도 일하지 않았다. (그래야하는 것처럼 상세한 메시지를 제공하지 않는다.) 그래서 나는 지금 막 붙어있다. 어떤 도움이라도 대단히 감사합니다.
it('Agriculture record should return at least one record with ag_status to true', function(done){
MobAgriculture.model.find({ time_id: "AYearAgo" }, {_id: 0, ag_status: 1 }, function(err, result) {
should.not.exist(err);
should.exist(result);
result.should.have.length(6);
console.log(result);
var level2 = { "ag_status" : true };
result.should.include(level2);
done();
});
});
. 나는 이것을 추가했다 : 'var level2 = {ag_status : true}; [{ag_status : true}, {ag_status : true}]. should.includeEql (level2); result.should.includeEql (level2); ' 첫 번째 _should_는 통과하지만 두 번째 _should_는 여전히 실패합니다. 그래서, 그것은 몽구스가 그것을 선물하고있는 방법과 더불어 무엇인가입니다. 그러나 나는 그것을 눈에 띄게 잘못 본 것을 볼 수 없다. 어떤 아이디어? – frank
@frankm 예제 코드에 console.log 문이있는 것을 볼 수 있습니다. 출력은 어떻게됩니까? 로그에서 출력을 복사하여 테스트한다면 대신 작동합니까? – Mike
출력은 "1) Agriculture record ...."로 시작하는 원래 게시물의 상단 부분입니다. _should_ 테스트 케이스를 단순화하려고 했으므로 몽구스 투영법을 변경하여 '{ag_status : true} '. 따라서 mongoose 출력 배열에는 6 개의 요소가 있고 각각 {{ag_status : true} '이고 {{ag_status : true}'에 대한 변수는 찾고 있습니다. 그 동안 나는 몽구스 결과를 정렬하고 배열의 각 _x_ 요소에 대해 'result [x] .should.include'를 호출하는 것으로 되돌아갔습니다. 이는 현재로서는 적절한 해결 방법입니다. – frank