小编Bri*_*ord的帖子

Autofixture 和 WebApi 控制器

我正在使用 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)

unit-testing moq xunit autofixture asp.net-web-api

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

使用MVCContrib TestHelper时出错

在尝试实现上一个问题的第二个答案时,我收到了一个错误.

我已经像帖子所示实现了这些方法,前三个方法正常工作.第四个(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)

我究竟做错了什么?

asp.net-mvc unit-testing rhino-mocks mvccontrib-testhelper

3
推荐指数
1
解决办法
855
查看次数

MVC 3与MVC Turbine

我在MVC 2中实现了自己的控制方法反演.我正在考虑审查MVC Turbine并可能转向它.但是,我今天注意到MVC 3 Preview 1已经发布并且内置了新的控制支持反转.我知道它会在发布前一段时间,但是想知道是否有人知道控制支持的新反转是否会基本上不需要MVC Turbine.

你怎么看?

asp.net-mvc inversion-of-control turbine

3
推荐指数
1
解决办法
483
查看次数

使用 FluentValidation 时向类添加 DataAnnotation

我使用 FluentValidation 框架向 MVC 项目中的模型添加验证和注释。

我需要将数据注释添加到模型的类级别。即,模型需要添加 DisplayColumn 属性。但是,由于我使用 FluentValidation(并且将应用程序的 ModelMetadataProvider 设置为使用 FluentValidation),即使我将 DisplayColumn 属性放在模型类上,它也不会被使用。但是,我找不到使用 FluentValidation 添加该注释的方法。

有谁知道我如何让它发挥作用?

谢谢

asp.net-mvc fluentvalidation data-annotations

3
推荐指数
1
解决办法
2491
查看次数

如何在引导程序中创建输入框和按钮?

使用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方式让他们排队?

css twitter-bootstrap

3
推荐指数
1
解决办法
4961
查看次数

淘汰赛验证成功班?

我正在使用Knockout Validation,并按照我的意愿完成所有工作.我在Twitter Bootstrap中使用它,并在遇到错误时设置正确的类.

使用jQuery Validation,我还能够在验证元素通过验证时设置类.例如,您可以在用户输入有效信息时将输入框变为绿色.

使用Knockout验证有没有办法做到这一点?有人有例子吗?

twitter-bootstrap knockout-2.0 knockout-validation

3
推荐指数
1
解决办法
1378
查看次数