相关疑难解决方法(0)

模拟Asp.net-mvc控制器上下文

因此控制器上下文取决于一些asp.net内部.有什么方法可以干净地模拟这些单元测试?当我只需要例如Request.HttpMethod来返回"GET"时,似乎很容易堵塞大量设置的测试.

我在网上看过一些例子/助手,但有些已经过时了.认为这将是保持最新和最伟大的好地方.

我正在使用最新版本的犀牛嘲笑

asp.net-mvc unit-testing rhino-mocks moq mocking

68
推荐指数
5
解决办法
4万
查看次数

单元测试ASP.Net MVC 4应用程序

我意识到这是大约20个不同帖子的重复,但它们都不是MVC4特有的,我见过的所有帖子都没有回答我的所有问题.到目前为止,我第一次涉足TDD世界至少可以说令人沮丧.我尝试做的大部分内容似乎与MVC 4不兼容,或者如果没有使用记录不完整的第三方库,我还不太了解.

我希望能够做的是编写一个测试来测试我的控制器动作,他们传递的模型和查看动作正在发送模型.我想测试视图是否存在,我想测试传递的模型是否是视图的正确类型,我想要一些方法来测试它是否会正常处理.我也希望能够测试我的路线.并测试验证过滤器?

我想要一种方法来对ASP.Net MVC进行单元测试,这将使机会很少.

测试Action的Model输出似乎很容易,但测试视图几乎是不可能的.

所以这是我的问题列表:

  1. 一旦我测试了动作并获得了动作结果,我该如何测试以查看它想要的视图是否存在?
  2. 我如何测试我的路线?
  3. 我如何测试以确保正确处理我的观点?
  4. 什么是ASP.Net MVC 4的THOROUGH单元测试真正的"最佳实践"?
  5. 如何进行单元测试表单身份验证?
  6. 如何对动作过滤器进行单元测试?

我更喜欢使用内置的Visual Studio测试项目,但如果我必须使用NUnit,我必须这样做.我只需要确保它正确完成.

提前感谢您的回复.

编辑:我也无法让NUnit使用我的MVC4应用程序,因为有些软件与.NET版本不兼容,其中一个程序集已被编译.

tdd unit-testing visual-studio-2010 visual-studio asp.net-mvc-4

60
推荐指数
1
解决办法
1万
查看次数

ASP.NET MVC如何实现返回上一页的链接?

标题说了这一切.

一些上下文:
我有一个搜索机制 - 搜索视图,搜索结果视图和详细信息视图(代表一个结果项,如webforms中的formview).我想在详细信息视图中有一个链接,它会将用户返回到搜索结果视图.

想法:
只是阅读有关TempData的信息,但我想这无济于事,因为用户可能会在他想要返回之前调用某些操作.

会话可能有效,但我不确定我应该如何处理它.

我不想用javascript来完成这个.

编辑:
似乎我会坚持使用eu-ge-ne的解决方案.结果如下:

#region usages

using System.Web.Mvc;
using CompanyName.UI.UIApp.Infrastructure.Enums;

#endregion

namespace CompanyName.UI.UIApp.Infrastructure.Filters
{
    /// <summary>
    /// Apply on action method to store URL of request in session
    /// </summary>
    public class RememberUrlAttribute : ActionFilterAttribute
    {
        public override void OnActionExecuting  
           (ActionExecutingContext filterContext)
        {
            var httpContext = filterContext.HttpContext;

            if (httpContext.Request.RequestType == "GET"
                && !httpContext.Request.IsAjaxRequest())
            {
                SessionManager
                .Save(SessionKey.PreviousUrl,
                      SessionManager.Get(SessionKey.CurrentUrl) ??
                      httpContext.Request.Url);

                SessionManager
                .Save(SessionKey.CurrentUrl,
                      httpContext.Request.Url);
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

顺便问一下.IsAjaxRequest()方法是如何工作的?它只了解MS AJAX,还是比它更聪明?

asp.net-mvc session

5
推荐指数
1
解决办法
7225
查看次数

自定义重定向操作筛选单元测试

我已经构建了一个自定义操作筛选器以验证Web Service返回参数.如果未验证参数,则ActionFilter会将用户重定向到维护页面.

这是我的动作过滤器

public class RequireWSValidation : ActionFilterAttribute
{
    public String Controller { get; set; }
    public String Action { get; set; }
    public String ValidationParam { get; set; }

    public RequireWSValidation()
        : this(null, null)
    {
    }

    public RequireWSValidation(string controller, string action)
        : this(controller, action, "WSOk")
    {

    }
    public RequireWSValidation(string controller, string action, string viewDataParam)
    {
        Controller = controller;
        Action = action;
        ValidationParam = viewDataParam;
    }

    public override void OnActionExecuted(ActionExecutedContext filterContext)
    {
        if (filterContext.Controller.ViewData[ValidationParam] == null)
        {
            filterContext.Result = new …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc

2
推荐指数
1
解决办法
1456
查看次数