我正在使用 AutoFixture 尝试为 WebApi 站点测试我的控制器。如Ploeh 的博客所述,我将 AutoData 功能与 Moq 结合使用。
我的控制器在构造函数中使用 IDepartmentManager。这是我的测试:
[Theory, AutoMoqData]
public void GetCallsManagerCorrectly(
[Frozen]Mock<IDepartmentManager> departmentManagerMock,
DepartmentsController sut)
{
// Fixture setup
// Exercise system
sut.Get();
// Verify outcome
departmentManagerMock.Verify(d => d.GetAllDepartments(), Times.Exactly(1));
// Teardown
}
Run Code Online (Sandbox Code Playgroud)
当我运行此测试时,它失败并显示以下内容:
GetCallsManagerCorrectly 失败:
System.InvalidOperationException:获取理论数据时抛出异常 Provision.Tests.WebApiControllerTests.DepartmentControllerTests.GetCallsManagerCorrectly:System.Reflection.TargetInvocationException:调用目标已抛出异常。---> System.ArgumentException: 只允许使用“http”和“https”方案。参数名称:System.Net.Http.HttpRequestMessage.set_RequestUri 处的值(Uri 值)
首先,这仍然是编写这些测试的有效且推荐的方法吗?我喜欢它让一切变得多么小。
其次,我应该怎么做才能解决这个问题?如果我将测试更改为:
[Theory, AutoMoqData]
public void GetCallsManagerCorrectly(
[Frozen]Mock<IDepartmentManager> departmentManagerMock)
{
// Fixture setup
DepartmentsController sut =
new DepartmentsController(departmentManagerMock.Object);
// Exercise system
sut.Get();
// Verify outcome
departmentManagerMock.Verify(d => d.GetAllDepartments(), Times.Exactly(1));
// …Run Code Online (Sandbox Code Playgroud) 在尝试实现上一个问题的第二个答案时,我收到了一个错误.
我已经像帖子所示实现了这些方法,前三个方法正常工作.第四个(HomeController_Delete_Action_Handler_Should_Redirect_If_Model_Successfully_Delete)给出了这个错误:在结果的Values集合中找不到名为'controller'的参数.
如果我将代码更改为:
actual
.AssertActionRedirect()
.ToAction("Index");
Run Code Online (Sandbox Code Playgroud)
它工作正常,但我不喜欢那里的"魔术字符串",而更喜欢使用另一张海报使用的lambda方法.
我的控制器方法如下所示:
[HttpPost]
public ActionResult Delete(State model)
{
try
{
if( model == null )
{
return View( model );
}
_stateService.Delete( model );
return RedirectToAction("Index");
}
catch
{
return View( model );
}
}
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
我在MVC 2中实现了自己的控制方法反演.我正在考虑审查MVC Turbine并可能转向它.但是,我今天注意到MVC 3 Preview 1已经发布并且内置了新的控制支持反转.我知道它会在发布前一段时间,但是想知道是否有人知道控制支持的新反转是否会基本上不需要MVC Turbine.
你怎么看?
我使用 FluentValidation 框架向 MVC 项目中的模型添加验证和注释。
我需要将数据注释添加到模型的类级别。即,模型需要添加 DisplayColumn 属性。但是,由于我使用 FluentValidation(并且将应用程序的 ModelMetadataProvider 设置为使用 FluentValidation),即使我将 DisplayColumn 属性放在模型类上,它也不会被使用。但是,我找不到使用 FluentValidation 添加该注释的方法。
有谁知道我如何让它发挥作用?
谢谢
使用Twitter Bootstrap 2.1.0时,使用如下HTML:
<div class="row">
<div class="span10">
<form data-bind="submit: AddDepartment">
<input type="text" class="input-large" placeholder="Department Name" />
<button type="submit" class="btn">Add</button>
</form>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
该按钮不与文本框对齐.你可以在这里看到一个jsFiddle .
什么是正确的Bootstrap方式让他们排队?
我正在使用Knockout Validation,并按照我的意愿完成所有工作.我在Twitter Bootstrap中使用它,并在遇到错误时设置正确的类.
使用jQuery Validation,我还能够在验证元素通过验证时设置类.例如,您可以在用户输入有效信息时将输入框变为绿色.
使用Knockout验证有没有办法做到这一点?有人有例子吗?
asp.net-mvc ×3
unit-testing ×2
autofixture ×1
css ×1
knockout-2.0 ×1
moq ×1
rhino-mocks ×1
turbine ×1
xunit ×1