我目前在测试我的控制器使用的模拟方法时遇到问题。它具有特定枚举的返回类型。我目前总是从这个模拟方法返回默认枚举值,而不是我指定它返回的值。我错过了什么吗?我已经尝试过 Moq 和 JustMock lite,结果相同。JustMock 精简版示例如下。
希望我在复制代码时没有犯任何错误,我已经更改了所有对象的名称,因此对此深表歉意。
这是单元测试的一部分:
var returnStatus = ExampleEnum.Invalid;
//Mock the client
var client = Mock.Create<ITestInterface>();
Mock.Arrange(() => client.ValidateSomething(Guid.NewGuid()))
.Returns(returnStatus).MustBeCalled();
var testController = new TestController(client);
var result = testController.DoSomething(Guid.NewGuid().ToString()) as ViewResult;
以下是控制器的相关位:
private ITestInterface _client { get; set; }
public TestController(ITestInterface client)
{
_client = client;
}
这是我的控制器操作的一部分:
public ActionResult DoSomething(string id)
{
Guid token;
if(!string.IsNullOrEmpty(id) && Guid.TryParse(id, out token))
{
using (var client = _client)
{
ApplicationUser applicationUser;
var status = client.ValidateSomething(token);
switch (status)
{
客户端已正确模拟,但返回的“状态”属性始终是 ExampleEnum.DefaultValue 而不是我指定为结果的值。
我希望我已经提供了足够的信息。非常感谢任何帮助。