2016-10-24 1 views
1

공유 할 수없는 세부 사항을 숨기기 위해 약간 변경되었지만 예제 기능 (checkbro.js라고 함)은 여기에 있습니다. ..이 sinon.spy 모카 예제에서 확인 및 경고를 변경하는 쉬운 방법이 있습니까

checkbro.js

내 테스트 예제 (이 ReferenceError가가 실패 확인이 정의되지 않은)의
function saveRecord(context) { 
     if (!checkIfBro.knowsABro(context.currentRecord)) { 
      if (confirm('Do you Bro?')) { 
       context.currentRecord.setValue('bro', -10, true); 
      } else { 
       alert('Please someone has to be a bro'); 
      } 
     } 
     return true; 
    } 

하나 ...

checkbro.spec.js

it('should only execute for create new bro master', function() { 
     let checkIfBro = { knowsABro: sinon.spy() }; 
     let confirm = {confirm: sinon.spy()}; 
     let record = {currentRecord: { setValue: sinon.spy()}}; 
     let checkIfBroRec = requirejs('contacts/checkbro', [checkIfBro, log]); 
     checkIfBroRec.saveRecord({ record: record }); 
     checkIfBroRec.knowsABro.called.should.be.true; 
     record.currentRecord.setValue.called.should.be.true; 
    }); 

약간의 문맥으로 브라우저 테스트를 많이했고 단위 테스트를 시작 했으므로 몇 가지 학습 곡선이 있습니다. sinon 또는 다른 모듈을 더 잘 사용하면 나는 모든 귀입니다. 또한 이것은 개발자에 의해 쓰여졌 고 이제는 인계받습니다. 그런데 if (confirm('Do you Bro?')) 위 코드에서

+1

이 줄'requirejs ('contacts/checkbro', [checkIfBro, log]);을 사용하여 종속성을 전달하는 경우 확인 스파이를 함수에 전달하는 경로는? 그럼 확인 스파이를 포함해야합니다. 함수는 참조를 가질 것이다. – Hosar

답변

1

It fails ReferenceError: confirm is not defined

함수로서 let confirm = {confirm: sinon.spy()}를 이용한다. 이 TypeError: confirm is not a function을 던져해야합니다

var confirm = {}; 
function foo() { 
    if(confirm()){} 
} 

foo(); // TypeError: confirm is not a function 

을 그래서 if (confirm('Do you Bro?'))에 도달하기 때문에 문제가 거짓말을해야하는 코드의 원인 checkIfBroRec.saveRecord({ record: record }) 아니라고 결론 안전에 : 불행하게도

let checkIfBroRec = requirejs('contacts/checkbro', [checkIfBro, log]); 

의이 부분 코드는 위 코드 조각에 완전히 표시되지 않으므로 문제의 원인을 평가할 수 없습니다.