2

次のようなことをしたいのですが、Do メソッドの構文が正しくないようです。

var sqr = new _mocks.CreateRenderer<ShapeRenderer>();
Expect.Call(sqr.CanRender(null)).IgnoreArguments().Do(x =>x.GetType() == typeof(Square)).Repeat.Any();

基本的に、入力が Square 型の場合は true を返し、それ以外の場合は false を返すように sqr.CanRender() メソッドを設定したいと思います。

4

3 に答える 3

3

これを探していますか?

Expect.Call(sqr.CanRender(null)).IgnoreArguments()
    .Do((Func<Shape, bool>) delegate(Agent x){return x.GetType() == typeof(Square);})
    .Repeat.Any();

編集:答えは精神的に正しかったが、元の構文はうまく機能しなかった。

于 2008-11-23T23:06:47.197 に答える
2

.Net Framework 3.5 ( Cristian の回答で必要) を使用できないため、 System.Funcデリゲートにアクセスできない場合は、独自のデリゲートを定義する必要があります。

クラス メンバーに追加します。

private delegate bool CanRenderDelegate(Shape shape)

期待値は次のようになります。

Expect.Call(sqr.CanRender(null))
    .IgnoreArguments()
    .Do((CanRenderDelegate) delegate(Agent x){return x.GetType() == typeof(Square);})
    .Repeat.Any();
于 2009-03-04T10:35:26.700 に答える
1

Rhino Mocks 3.5以降、次のことができるようになりました。

Expect.Call( sqr.CanRender( Arg<Shape>.Is.TypeOf<Square>() ).Repeat.Any();

詳細については、このwikiの記事を参照してください。

于 2009-09-16T06:13:13.920 に答える