2012-06-19 10 views
8

健全性チェックとして、私はこれはなぜジャスミンスパイは、andReturn値を返してもそれが呼び出されたと思いますか?

等しい「fooへの期待「fooz」で失敗し

spyOn(this.viewModel.requests, 'submitRequest').andReturn('fooz'); 

var ret = this.viewModel.requests.submitRequest(); 
expect(ret).toEqual('foo'); 

expect(this.viewModel.requests.submitRequest).toHaveBeenCalled(); 

を試してみましたので、私は、発射されていないjQuery.postにスパイをデバッグしようとしています'

しかし、私はandReturnに引数に'foo''fooz'を変更すると、テストはsubmitRequest上のスパイが呼び出されたと予想される

で失敗します。

スパイが缶詰の値を返しているので、なぜtoHaveBeenCalledが失敗するのですか?

+0

あなたはジャスミンのどのバージョンを使用していますか? – Dancrumb

+0

@Dancrumb 1.2.0-rc3 –

答えて

1

私は、これが解決すべきではない知っているが、時々、これはより一貫

+0

提案してくれてありがとうございますが、このテストも失敗します: "submitRequestのスパイが呼び出されたと期待しています" –

+0

@GregBaconはconsole.log(submitSpy)をやってみましたか?何を得るのですか?これは本当に奇妙です、あなたはどのフレームワークを使用していますか? –

1

あなたのコードが動作する必要があります動作しますので、あなたは

var submitSpy = spyOn(this.viewModel.requests, 'submitRequest').andReturn('foo'); 

var ret = this.viewModel.requests.submitRequest(); 
expect(ret).toEqual('foo'); 

expect(submitSpy).toHaveBeenCalled(); 

を試してみました。私はジャスミンスタンドアロンの例でそれをテストしています

it("tells the current song if the user has made it a favorite", function() { 
    spyOn(song, 'persistFavoriteStatus').andReturn('foo'); 
    var ret = song.persistFavoriteStatus(); 
    expect(ret).toEqual('foo'); 

    expect(song.persistFavoriteStatus).toHaveBeenCalled(); 
}); 

私の腸が発生している問題は、呼び出しの後/前のジャスミンのスコーピングとしなければならないことを私に伝えます - 私はそのようなイライラケースに遭遇してきた自分自身を。テストの初めに、私は、環境があなたが期待した通りであることを確認することになります(つまり、スパイはリセットされます)。

関連する問題