0

我正在尝试对我的路线进行单元测试,但我开始遇到问题。一些动作方法参数将不再来自 URL,而是由动作过滤器提供,基于这篇文章:http ://haacked.com/archive/2010/02/21/manipulating-action -方法参数.aspx

问题是我有一个 url:/some/path/id它映射到一个动作方法public ViewResult Action(int id, Guid sessionId),在该方法中sessionId,动作过滤器将其添加到动作参数中。现在我可以看到让这个测试通过而不用做Guid的方法Guid?

"~/some/path/1".ShouldMapTo<SomeController>(x => x.Action(1, <anyGuid>));

有任何想法吗?

4

1 回答 1

1

如果不让 Guid 成为 Guid,我现在就无法通过这个测试吗?

嗯,其实是有办法的。

如果您使用的是 Rhino Mocks(默认与 捆绑在一起MvcContrib.TestHelper,因此您已经隐式使用它):

"~/home/action/1"
    .ShouldMapTo<SomeController>(x => x.Action(1, Arg<Guid>.Matches(y => true)));

如果您使用的是最小起订量:

"~/some/action/1"
    .ShouldMapTo<SomeController>(x => x.Action(1, It.IsAny<Guid>()));

如果您正在使用其他一些模拟框架,请检查有关允许您指定可以是任何参数约束的语法的文档。

于 2012-08-15T20:46:18.563 回答