0

Rhino Mock AAA 構文を使用して、次の状況をモックすることは可能ですか?

// Interface
interface IFoo
{
    void ExecuteFoo( Expression<Action> action );
    void Increment(out int value); // value++
}

// Situation to mock:
var foo = new Foo();
int value = 7;
foo.ExecuteFoo( () => foo.Increment( out value ) );    

// and here is mock that needs to be remade:
fooMock.Expect( f => f.ExecuteFoo( Arg<Expression<Action>>.Is.NotNull ));
fooMock.ExecuteFoo( () => foo.Increment( out value ) );   

しかし、.Is.NotNull 制約の代わりに、どういうわけか、次の期待値を渡す必要があります。

fooMock.Expect(f => f.Increment(out Arg<int>.Out(8).Dummy));

少し奇妙に思えるかもしれませんが、ExecuteFoo が重要であり、このように実行する必要があるとしましょう。

4

1 に答える 1

1

コンパイラによるラムダの処理方法が原因で、実際にラムダに期待を設定することはできません。参照: http://weblogs.asp.net/psteele/archive/2010/06/18/rhino-mocks-lambdas-and-expectations.aspx

于 2012-06-12T19:41:51.573 に答える