2012-01-24 6 views
4

これは奇妙なビットです。私はパラメータを持つメソッドをスタブしようとしている、私は引数が無視されているので、パラメータが何であるか気にしない。それは次のようになります。スタブメソッドがそうのように呼び出されたときにFakeItEasyの既存の値でパラメータをスタビングアウト

List<Foo> ignored; 
A.CallTo(() => fake.Method(out ignored)) 
    .Returns(something); 

これは何の問題もなく動作します:targetは、事前に初期化されるとき

List<Foo> target; 
var result = service.Method(out target); 

しかし、それは動作しません。たとえば:

List<Foo> target = new List<Foo>(); 
var result = service.Method(out target); 

私は偽物でTagを検査するとき、私はパラメータはので、私が出て、ターゲットがすでに何かに設定されている場合、彼らは一致していない疑いがある<NULL>として記録されていることがわかります。私はnew List<Foo>()に私のテストでignoredを設定しようとしましたが、またA<List<Foo>>.Ignoredを試しましたが、いずれも結果に影響しません。

私の質問は、outパラメータが既に値を持っている場合、outパラメータでメソッドをスタブする方法を知っていますか?

答えて

4

更新:一致するときFakeItEasy 1.23.0以来outパラメータの初期値は無視されていないので、WithAnyArguments

は不要、5分後、私は(このシナリオで)受け入れ可能な解決策を見つけました。このメソッドに渡される引数には関心がないので、WithAnyArguments()メソッドを使用すると動作するように見えます。これは引数をまとめてチェックするショートカットでなければなりません。

最終的なコードは次のとおりです。

List<Foo> ignored; 
A.CallTo(() => fake.Method(out ignored)) 
    .WithAnyArguments() 
    .Returns(something); 

私はすべての引数を無視したくないん場合、これは明らかに問題を解決していません。誰ももっと洗練されたソリューションを持っていない場合にのみ、私はこの答えを受け入れます。

+2

これは解決策ではありません。私は何年もの間この素晴らしい文法について考えてきましたが、あなたが何かアイデアを持っていれば私に教えてください。 –

関連する問題