2013-08-01 3 views
1

비동기 프로세스가 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(); 
       }); 

     }); 

답변

0

내가 should.js 매우 익숙하지 오전하지만 level2와 같은 객체가 배열에 존재하는지 확인하기 위해 원하는대로 당신이includeEql를 사용한다 생각하지 그 레벨 2 자체가 거기에있다 . 자신의 docs에서 :

포함 (OBJ)

어설 주어진 obj가 같이 IndexOf()을 통해 존재, 그래서이 같이 IndexOf를 구현 문자열, 배열, 또는 사용자 정의 개체에 대해 작동합니다.


includeEql (OBJ) 지정된 OBJ와 같은 객체가 배열에 있는지

어설

:

하는 데 도움이,하지만 난 여전히 오류를 얻고있다
+0

. 나는 이것을 추가했다 : 'var level2 = {ag_status : true}; [{ag_status : true}, {ag_status : true}]. should.includeEql (level2); result.should.includeEql (level2); ' 첫 번째 _should_는 통과하지만 두 번째 _should_는 여전히 실패합니다. 그래서, 그것은 몽구스가 그것을 선물하고있는 방법과 더불어 무엇인가입니다. 그러나 나는 그것을 눈에 띄게 잘못 본 것을 볼 수 없다. 어떤 아이디어? – frank

+0

@frankm 예제 코드에 console.log 문이있는 것을 볼 수 있습니다. 출력은 어떻게됩니까? 로그에서 출력을 복사하여 테스트한다면 대신 작동합니까? – Mike

+0

출력은 "1) Agriculture record ...."로 시작하는 원래 게시물의 상단 부분입니다. _should_ 테스트 케이스를 단순화하려고 했으므로 몽구스 투영법을 변경하여 '{ag_status : true} '. 따라서 mongoose 출력 배열에는 6 개의 요소가 있고 각각 {{ag_status : true} '이고 {{ag_status : true}'에 대한 변수는 찾고 있습니다. 그 동안 나는 몽구스 결과를 정렬하고 배열의 각 _x_ 요소에 대해 'result [x] .should.include'를 호출하는 것으로 되돌아갔습니다. 이는 현재로서는 적절한 해결 방법입니다. – frank

관련 문제