2017-04-05 19 views
0

単純な依存関係生成関数を嘲笑するのに問題があります。私はactualFunctionの内側にログイン慰めるときが実行などのエラーアウトは、呼び出されませんjestモック依存関係生成関数

//generatorFunction.js 
export default()=>({execute: (arg1)=>Promise.resolve(arg1)}) 

//actualFunction.js 
import generate from 'generatorFunction' 
export default (arg1)=>generate(arg1) 

//actualFunction.test.js 
import actualFunction from './actualFunction' 
import generatorFunction from './generatorFunction' 
const resultingGeneratedFunction = generatorFunction(); 

jest.mock('generatorFunction',()=>jest.fn(()=>({execute:()=>Promise.resolve()}))) 
it('calls generateFunction', function(done){ 
    actualFunction(1).then(()=>{ 
    expect(resultingGeneratedFunction.execute).toHaveBeenCalledOnce() 
    done() 
    }) 
}) 

は呼ばれていた実行のこぎりです。

答えて

0

問題は、テストのどこかで約束を使うことを知らないことです。あなたは、あなたから約束を返すか、async/awaitを使用してください。 docs

import actualFunction from './actualFunction' 
import generate from 'generatorFunction' 

jest.mock('generatorFunction',()=>jest.fn(()=>({execute:()=>Promise.resolve()}))) 
it('calls generateFunction', function(){ 
    return actualFunction(1).then(()=>{ 
    expect(generateFunction.execute).toHaveBeenCalledOnce() 
    }) 
}) 

import actualFunction from './actualFunction' 
import generate from 'generatorFunction' 

jest.mock('generatorFunction',()=>jest.fn(()=>({execute:()=>Promise.resolve()}))) 
it('calls generateFunction', async function(){ 
    const value = await actualFunction(1) 
    expect(generateFunction.execute).toHaveBeenCalledOnce() 
}) 
+0

私はあなたが約束を返さなければならなかったことに気づいていませんでしたが、これはまだ理にかなっていません。 doe generateFunctionは、提供したサンプルのどこから来たのですか?私は質問にその文脈を提供せず、今すぐ追加したことに気付いた – l2silver

+0

ああ、申し訳ありませんが、あなたもそれらをインポートする必要があります。インポートされたバージョンは模倣されたものであり、あなたはそれをテストすることができます。私の答えを更新しました。 –

+0

申し訳ありませんが、ジェネレータ関数の問題は、それ自体のインスタンスを生成しなければならないということです、そして、これは混乱がどこに来るかと思います。この例を詳しく見ると、インポートされたgeneratorFunctionがgenerateFunctionを作成します。私は本当に私の質問でもっとはっきりしていたはずでした、私は今それを変更します – l2silver