2017-05-26 7 views
0

のために働いていない私はこのようになります(trysinon.jsと呼ばれる)本当に簡単JS libにありますSinonは、エクスポートされた関数

export function foo() { 
    bar(); 
} 

export function bar() { 
return 2; 
} 

をそして、私は次のテスト

import expect from 'expect'; 
import sinon from 'sinon'; 
import * as trysinon from 'trysinon'; 

describe('trying sinon', function() { 
    beforeEach(function() { 
    sinon.stub(trysinon, 'bar'); 
    }); 

    afterEach(function() { 
    trysinon.bar.restore(); 
    }); 

    it('calls bar', function() { 
    trysinon.foo(); 
    expect(trysinon.bar.called).toBe(true); 
    }); 
}); 

とテストを持っています失敗しています。テストに合格するにはどうすればいいですか?

+0

[ES6でエクスポートされた関数をスタブする方法は?](https://stackoverflow.com/a/40267448/8035178) – Fabian

+0

受け入れられた答えは私には役に立たない。 –

+0

DreamSonicからのリンクされた答えをご覧ください(受け入れられたものではありません) – Fabian

答えて

0

foo()では、trysinon.jsの内部機能であるbar()を呼び出しました。このbar()は、エクスポートされたbar()とは異なります。最善の方法は、trysinonをクラスに変更するか、またはをfoo()にエクスポートすることです。

function bar() { return 2; } 
module.exports.bar = bar; 

function foo() { 
    module.exports.bar(); 
} 
module.exports.foo = foo; 

あなたは、これはあなたを助けることができるsinon.stub(trysinon, 'bar').returns(2)

希望でbar()をスタブすることができます。

関連する問題