当我在MVC 2预览1中使用DataAnnotation验证时,如何在验证实体时测试我的控制器操作是否在ModelState中放置了正确的错误?
一些代码来说明.一,行动:
[HttpPost]
public ActionResult Index(BlogPost b)
{
if(ModelState.IsValid)
{
_blogService.Insert(b);
return(View("Success", b));
}
return View(b);
}
Run Code Online (Sandbox Code Playgroud)
这是一个失败的单元测试,我认为应该通过但不是(使用MbUnit和Moq):
[Test]
public void When_processing_invalid_post_HomeControllerModelState_should_have_at_least_one_error()
{
// arrange
var mockRepository = new Mock<IBlogPostSVC>();
var homeController = new HomeController(mockRepository.Object);
// act
var p = new BlogPost { Title = "test" }; // date and content should be required
homeController.Index(p);
// assert
Assert.IsTrue(!homeController.ModelState.IsValid);
}
Run Code Online (Sandbox Code Playgroud)
我想除了这个问题,应该我来测试验证,并应在我这种方式测试它?
单身实际上何时比静态类更容易或更好?在我看来,创建单身只是额外的努力,实际上并不需要,但我确信有一个很好的理由.否则,显然不会使用它们.
我正在研究Euler 40项目,并且有点担心没有int.Parse(char).没什么大不了的,但我做了一些询问,有人建议char.GetNumericValue.GetNumericValue对我来说似乎是一个非常奇怪的方法:
那么这种方法背后的原因是什么,以及返回双重服务的目的是什么?我甚至启动了Reflector并查看了InternalGetNumericValue,但它就像看着Lost一样:每个答案都会导致另一个问题.
在模型或ViewModel上使用带有MVC(MVVM)的ViewModel时,验证应该驻留在哪里?(或两者兼而有之)?为什么?我特别考虑到ASP.NET MVC的V2即将推出,我提出这个问题.
复杂/自定义验证怎么样?
我有一堆具有不同签名的方法.这些方法与脆弱的数据连接交互,因此我们经常使用辅助类来执行重试/重新连接等.如下所示:
MyHelper.PerformCall( () => { doStuffWithData(parameters...) });
Run Code Online (Sandbox Code Playgroud)
这工作正常,但它可以使代码有点混乱.我更喜欢做的是装饰与数据连接交互的方法,如下所示:
[InteractsWithData]
protected string doStuffWithData(parameters...)
{
// do stuff...
}
Run Code Online (Sandbox Code Playgroud)
然后基本上,每当doStuffWithData调用时,该方法的主体将作为Actionto 传入MyHelper.PerformCall().我该怎么做呢?
我有一个使用ASP.net会员提供商的asp.net网站.用户ID跟踪DB中的每个注释,条目等.
由于MS没有提供更改用户名的方法,因此我在数据库的"users"表中找到了userNAME,并且只有一个用户名出现的位置.
我的问题是,
提供"编辑个人资料"页面是否安全,允许用户编辑自己的用户名.当然,我会通过直接更改数据库中的"用户名"值来在后台处理此更改.
这有什么缺点吗?我已经创建并修改了一些测试帐户,看起来很好,我只是想知道在投入生产之前是否存在任何已知的负面影响.
我创建了一些非常简单的Azure功能.他们从Couchbase(在VM上运行Azure)中读取和写入数据.
我担心我在Azure功能中与Couchbase建立的连接.我Cluster每次都创建一个对象.这是一项昂贵的操作,我通常只会在普通的网络应用程序中执行一次.但是在Azure功能中,我new每次都在努力.
除了Couchbase之外,实例化这样的对象还有很多代价.有没有办法创建一个单例,或Azure函数可以在调用之间重用的某种共享对象?
除了ASP.NET MVC Web应用程序在MVC模式的实现中更加清晰并且严格遵循MVC模式这一事实之外,它与ASP.NET Web应用程序有何不同?
如果您使ASP.NET Web应用程序具有业务逻辑层,数据访问层并严格使用它们进行所有数据查询,那么它是否完全遵循MVC模式?
我的逻辑是:BLL和DLL一起是Model,ASPX页面是View,后面的代码隐藏(ASPX.CS)页面是Controller.
提前感谢任何能够确认上述内容和/或更多地了解该主题的人.
asp.net-mvc ×3
.net ×2
asp.net ×2
c# ×2
validation ×2
animation ×1
azure ×1
char ×1
class ×1
decorator ×1
html5 ×1
javascript ×1
linq ×1
mvvm ×1
numbers ×1
singleton ×1
static ×1
tdd ×1
unicode ×1
unit-testing ×1