如何用FluentAssertions.AspNetCore.Mvc断言ASP.Net Core 2 MVC控制器重定向到动作?
在ASP.NET Core 2 MVC中用FluentAssertions.AspNetCore.Mvc断言控制器重定向到指定动作
好消息!你想要的这种简洁断言写法完全可以实现,FluentAssertions.AspNetCore.Mvc库刚好提供了对应的扩展方法,不用再写那种冗长的BeRedirectedToRouteResult().WithAction(...)链式调用了。
首先要确保你已经安装了FluentAssertions.AspNetCore.Mvc NuGet包,并且在测试类里引用了正确的命名空间:
using FluentAssertions.AspNetCore.Mvc;
接下来就可以按照你期望的方式编写测试了,直接对控制器返回的结果做断言:
[Fact] public void SomeAction_WhenCalled_RedirectsToSomeOtherAction() { // 准备测试控制器实例 var controller = new SomeController(); // 调用要测试的动作方法 var result = controller.SomeAction(); // 断言重定向到指定动作 result.Should().BeRedirectedToAction("SomeOtherAction"); }
如果你的重定向是跨控制器的(比如要跳转到另一个控制器的动作),还可以用重载方法指定控制器名称:
result.Should().BeRedirectedToAction("SomeOtherAction", "TargetController");
要是重定向还带了路由参数,也能继续链式添加参数断言:
result.Should().BeRedirectedToAction("SomeOtherAction") .WithRouteValue("id", 123);
这种写法完全贴合你的预期,比原来的链式写法更直观,完美对应RedirectToAction的返回结果类型。
内容的提问来源于stack exchange,提问作者Ben Gribaudo
相关产品推荐
相关产品推荐

