c# - 如何使用 Moq 框架模拟 ModelState.IsValid?

标签 c# asp.net-mvc unit-testing mocking moq

我正在检查我的 Controller 操作方法中的 ModelState.IsValid,它创建了这样一个 Employee:

[HttpPost]
public virtual ActionResult Create(EmployeeForm employeeForm)
{
    if (this.ModelState.IsValid)
    {
        IEmployee employee = this._uiFactoryInstance.Map(employeeForm);
        employee.Save();
    }

    // Etc.
}

我想使用 Moq 框架在我的单元测试方法中模拟它。我试着像这样模拟它:

var modelState = new Mock<ModelStateDictionary>();
modelState.Setup(m => m.IsValid).Returns(true);

但这会在我的单元测试用例中引发异常。有人可以帮我吗?

最佳答案

你不需要 mock 它。如果您已经有 Controller ,则可以在初始化测试时添加模型状态错误:

// arrange
_controllerUnderTest.ModelState.AddModelError("key", "error message");

// act
// Now call the controller action and it will 
// enter the (!ModelState.IsValid) condition
var actual = _controllerUnderTest.Index();

关于c# - 如何使用 Moq 框架模拟 ModelState.IsValid?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3822873/

相关文章:

C# 不要为未使用的参数定义变量

c# - 如何不在类中实现接口(interface)的功能?

html - 在 Controller 中添加 css

javascript - 使用 $.ajax (MVC 4) 将数据传递给 Controller

asp.net-mvc - mvc 3 session 和授权属性

java - 使用 PowerMockito 模拟私有(private)方法调用返回 null 而不是返回 List<String> : (Want not to execute private method)

c# - 是否可以对哈希表进行排序?

c# - C# 中的嵌套泛型是什么意思?

java - 为什么 mock 对象的 getter() 返回 null?

python - 如何使用 python 的 GAE 开发服务器测试台模拟文件上传到 blobstore