gpt4 book ai didi

asp.net-mvc-2 - 如何在 asp.net mvc 2 中使用 fakeiteasy 伪造用户登录以进行单元测试

转载 作者:行者123 更新时间:2023-12-04 15:15:38 24 4
gpt4 key购买 nike

我刚刚开始学习和使用 ASP.NET MVC 2,并且更多地参与到我的代码的单元测试中。我的问题大致是如何通过在我的测试中传递凭据来模拟用户登录。

我正在使用 MSpec 并试图了解 fakeiteasy 以便编写我的测试。到目前为止,我相信我已经为未经身份验证的用户尝试访问页面正确编写了一个测试(它通过了测试条件)。

Subject( typeof( HomeController ) )]
public class context_for_a_home_controller_for_not_logged_user
{
protected static HomeController HomeController;

Establish context = () =>
{
// Create controller
HomeController = new HomeController();

HomeController.ControllerContext = A.Fake<ControllerContext>();
};
}

[Subject(typeof(HomeController))]
public class when_the_home_page_is_requested : context_for_a_home_controller_for_not_logged_user
{
static ActionResult result;

Because of = () =>
result = HomeController.Index();

It should_return_the_log_in_page_if_user_not_logged_in = () =>
{ result.ShouldBeAView().And().ShouldUseDefaultView(); };
}

到现在为止还挺好。但是,我想测试经过身份验证的用户何时访问家庭 Controller 的场景。我被困在如何模拟经过身份验证的用户上,欢迎任何帮助或建议。

TIA,

大卫

最佳答案

在与 FakeItEasy 的创造者 Patrik Hagne 取得联系后,他想出了以下几点:

 [Subject( typeof( HomeController ) )]
public class context_for_a_home_controller_for_logged_user
{
protected static HomeController HomeController;

Establish context = () =>
{
// Create controller
HomeController = new HomeController();

HomeController.ControllerContext = A.Fake<ControllerContext>();
var fakePrincipal = A.Fake<IPrincipal>();
var fakeIdentity = new GenericIdentity( "username" );
A.CallTo( () => fakePrincipal.Identity ).Returns( fakeIdentity );
A.CallTo( () => HomeController.ControllerContext.HttpContext.User ).Returns( fakePrincipal );
};
}

成功了!谢谢帕特里克!

关于asp.net-mvc-2 - 如何在 asp.net mvc 2 中使用 fakeiteasy 伪造用户登录以进行单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4335624/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com