我想做类似以下的事情,但似乎无法正确获取Do方法的语法。
var sqr = new _mocks.CreateRenderer<ShapeRenderer>();
Expect.Call(sqr.CanRender(null)).IgnoreArguments().Do(x =>x.GetType() == typeof(Square)).Repeat.Any();
基本上,我想设置sqr.CanRender()方法,如果输入的类型为Square,则返回true,否则返回false。
答案 0 :(得分:3)
你在找这个吗?
Expect.Call(sqr.CanRender(null)).IgnoreArguments()
.Do((Func<Shape, bool>) delegate(Agent x){return x.GetType() == typeof(Square);})
.Repeat.Any();
编辑:答案是正确的,原始语法不太合适。
答案 1 :(得分:2)
如果您无法使用.Net Framework 3.5(Cristian's answer要求),因此无法访问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();
答案 2 :(得分:1)
从Rhino Mocks 3.5开始,您现在可以执行以下操作:
Expect.Call( sqr.CanRender( Arg<Shape>.Is.TypeOf<Square>() ).Repeat.Any();
请查看此wiki article以获取更多信息。