2016-07-18 10 views
1

これはしばらく私を悩ませました。私は同じファイルに2つの機能を持っています。ジャスミン - 同じファイルで呼び出される関数のスパイ

//fun.ts 

export function fun1(){ 
    let msg = fun2(); 
    return msg; 
} 

export function fun2(): string{ 
    return "Some message"; 
} 

スタブfun2とfun1を呼び出すタイプスクリプト仕様があります。

//fun.spec.ts 

import * as Fun from 'fun'; 

describe('Stubing',() => { 
    it('should stub the return value',() => { 
     spyOn(Fun, 'fun2').and.returnValue("A different message"); 

     expect(Fun.fun1()).toEqual("A different message") 
    }); 
}); 

しかし、私はスペックを実行すると、私が手出力は

Failures: 
1) Stubing should stub the return value 
1.1) Expected 'Some message' to equal 'A different message'. 

私はtypescriptですでテストを書いた後、私は成功しtranspilesとジャスミンのスペックを実行ゴクゴクスクリプトを持っています。すべてが動作しますが、私が理解できない唯一のことは、スパイが動作していない理由です。説明をいただければ幸いです。

+0

が、私はこれを再現することができませんでした参照実行されます。 'expect(Fun.fun2()).toEqual(" A different message ")を追加すると、テストは合格しますか? – nickflynn

+0

あなたのコメントを反映するために質問が更新されました。 – carchase

答えて

0

私はこれを最終的に考え出しました。 fun.tsでは、fun2オブジェクトを直接呼び出していますが、ジャスミン仕様にはそのオブジェクトへのアクセス権がありません。 Jasmine仕様でアクセスできる唯一のオブジェクトは、エクスポートオブジェクトです。スパイを動作させたい場合、私はexportオブジェクトに対してfun2を呼び出す必要があります。

//fun.ts 
export function fun1(){ 
    let msg = exports.fun2(); 
    console.log(msg); 
} 

export function fun2(): string{ 
    return "Some message"; 
} 

仕様は、私が

. 
1 spec, 0 failures 
関連する問題