2016-10-24 4 views
1

私は共有できない細かい部分を隠すように少し変更しましたが、私がテストしている機能(checkbro.jsと呼ぶことができます)はここにあります。 ..このsinon.spy mochaの例で確認とアラートを変更する簡単な方法はありますか

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]); 

のこの部分コードは上記のコードに完全には表示されないため、問題の原因を特定できません。

関連する問題