如何在单元测试中从 System.Threading.Tasks.<string> 方法 return
How to return from System.Threading.Tasks.<string> method in UnitTesting
我有一个具有以下签名的方法。
Task<string> Post(PartyVM model);
我正在编写一个单元测试class,使用下面的方法来测试上面的Post
方法。
mockPartyManager.Setup(mr => mr.Post(It.IsAny<PartyVM>())).Returns(
(PartyVM target) =>
{
if (target.PartyID.Equals(default(int)))
{
target.Name = "NewP";
target.Status = "ACTIVE";
target.PartyRoleID = msoList.Count() + 1;
partyList.Add(target);
}
else
{
var original = partyList.Where(q => q.PartyID == target.PartyID).Single();
if (original == null)
{
return "Execution failed";
}
original.Name = target.Name;
original.Status = target.Status;
}
return "Execution Successful";
});
this.MockMSOManager = mockPartyManager.Object;
}
我在尝试 return 字符串时收到错误消息。
Error 45 Cannot implicitly convert type 'string' to 'System.Threading.Tasks.Task'
我该如何解决这个问题。
尝试使用 Task.FromResult<TResult>
方法。来自 MSDN:
Creates a Task that's completed successfully with the
specified result.
return Task.FromResult("Execution failed");
你的方法returns任务,不是字符串。使用Task.FromResult更正错误。
https://msdn.microsoft.com/es-es/library/hh194922(v=vs.110).aspx
我有一个具有以下签名的方法。
Task<string> Post(PartyVM model);
我正在编写一个单元测试class,使用下面的方法来测试上面的Post
方法。
mockPartyManager.Setup(mr => mr.Post(It.IsAny<PartyVM>())).Returns(
(PartyVM target) =>
{
if (target.PartyID.Equals(default(int)))
{
target.Name = "NewP";
target.Status = "ACTIVE";
target.PartyRoleID = msoList.Count() + 1;
partyList.Add(target);
}
else
{
var original = partyList.Where(q => q.PartyID == target.PartyID).Single();
if (original == null)
{
return "Execution failed";
}
original.Name = target.Name;
original.Status = target.Status;
}
return "Execution Successful";
});
this.MockMSOManager = mockPartyManager.Object;
}
我在尝试 return 字符串时收到错误消息。
Error 45 Cannot implicitly convert type 'string' to 'System.Threading.Tasks.Task'
我该如何解决这个问题。
尝试使用 Task.FromResult<TResult>
方法。来自 MSDN:
Creates a Task that's completed successfully with the specified result.
return Task.FromResult("Execution failed");
你的方法returns任务,不是字符串。使用Task.FromResult更正错误。
https://msdn.microsoft.com/es-es/library/hh194922(v=vs.110).aspx