小编Joh*_*oge的帖子

ASP.NET MVC单元使用NUnit进行测试

我一直在尝试使用ASP.NET网站上发布的视频来学习ASP.NET MVC,我遇到了进行单元测试的问题.

我有一个非常简单的控制器,它使用LINQ to SQL来获取一个对象数组:

    public ActionResult Index()
    {
        ViewData["Message"] = "Welcome to ASP.NET MVC!";
        using (TrainingLogDataContext dc = new TrainingLogDataContext())
        {
            ViewData.Model = dc.Workouts.ToArray();
        }

        return View();
    }
Run Code Online (Sandbox Code Playgroud)

这在NUnit中失败,并出现以下错误:

at TrainingLog.Models.TrainingLogDataContext..ctor() in C:\Webs\TrainingLog\TrainingLog\Models\TrainingLog.designer.cs:line 41
at TrainingLog.Controllers.HomeController.Index() in C:\Webs\TrainingLog\TrainingLog\Controllers\HomeController.cs:line 16
at TrainingLogTests.Controllers.HomeControllerTest.Index() in C:\Webs\TrainingLog\TrainingLog.Tests\Controllers\HomeControllerTest.cs:line 23
Run Code Online (Sandbox Code Playgroud)

我想问题是NUnit无法获取DataContext的连接字符串web.config.什么是最好的解决方法?

它在我运行页面时工作正常,但单元测试在NUnit中失败.

asp.net-mvc nunit

7
推荐指数
2
解决办法
4137
查看次数

测试ASP.NET MVC网站

我正在使用具有图像上传功能的MVC网站,我想编写一个将上传图像的测试.

我创建了一个名为TestImage.jpg的图像,并将Copy to Output设置为"Copy if Newer".在我的测试中,我尝试使用以下代码加载它:

System.Drawing.Image testImage = System.Drawing.Image.FromFile(@"TestImage.jpg");
Run Code Online (Sandbox Code Playgroud)

"复制到输出"不应该将其复制到运行测试的同一目录中吗?如果没有,我怎样才能找到它被复制到的位置?最好的是某种项目根相对路径,所以我可以随意移动解决方案而不会破坏.

asp.net-mvc mstest

6
推荐指数
2
解决办法
2407
查看次数

在asp.net mvc中使用IDataErrorInfo

我有一个简单的地址输入应用程序,我正在尝试使用IDataErrorInfo接口,如asp.net网站上所述.

它适用于可以独立验证的项目,但是当某些项目依赖于其他项目时效果不佳.例如,验证邮政编码取决于国家/地区:

    private string _PostalCode;
    public string PostalCode
    {
        get
        {
            return _PostalCode;
        }
        set
        {
            switch (_Country)
            {
                case Countries.USA:
                    if (!Regex.IsMatch(value, @"^[0-9]{5}$"))
                        _errors.Add("PostalCode", "Invalid Zip Code");
                    break;
                case Countries.Canada:
                    if (!Regex.IsMatch(value, @"^([a-z][0-9][a-z]) ?([0-9][a-z][0-9])$", RegexOptions.IgnoreCase))
                        _errors.Add("PostalCode", "Invalid postal Code");
                    break;
                default:
                    throw new ArgumentException("Unknown Country");
            }
            _PostalCode = value;
        }
    }
Run Code Online (Sandbox Code Playgroud)

因此,您只能在设置国家/地区后验证邮政编码,但似乎无法控制该订单.

我可以使用IDataErrorInfo中的错误字符串,但这不会显示在字段旁边的Html.ValidationMessage中.

validation asp.net-mvc idataerrorinfo

4
推荐指数
1
解决办法
2317
查看次数

标签 统计

asp.net-mvc ×3

idataerrorinfo ×1

mstest ×1

nunit ×1

validation ×1