Rhino Mocks:如何从模拟对象方法返回条件结果

发布于 2024-07-09 00:36:51 字数 309 浏览 7 评论 0原文

我想做类似以下的事情,但似乎无法完全正确地获得 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。

I would like to do something like the following but can't seem to get the syntax for the Do method quite right.

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

So basically, I would like to set up the sqr.CanRender() method to return true if the input is of type Square and false otherwise.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

情深如许 2024-07-16 00:36:51

您在找这个吗?

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

编辑:答案在精神上是正确的,但原始语法不太有效。

Are you looking for this?

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

EDIT: The answer was correct in spirit bu the original syntax did not quite work.

黑色毁心梦 2024-07-16 00:36:51

如果您无法使用 .Net Framework 3.5(克里斯蒂安的回答),因此无权访问 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();

If you aren't able to use .Net Framework 3.5 (required by Cristian's answer) and therefore don't have access to the System.Func delegates then you'll need to define your own delegate.

Add to the class member:

private delegate bool CanRenderDelegate(Shape shape)

The expectation becomes:

Expect.Call(sqr.CanRender(null))
    .IgnoreArguments()
    .Do((CanRenderDelegate) delegate(Agent x){return x.GetType() == typeof(Square);})
    .Repeat.Any();
夜巴黎 2024-07-16 00:36:51

从 Rhino Mocks 3.5 开始,您现在可以执行以下操作:

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

查看这篇 wiki 文章 了解更多信息。

As of Rhino Mocks 3.5 you can now do the following:

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

Look at this wiki article for more information.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文