【发布时间】:2018-08-14 08:07:53
【问题描述】:
我在控制器中有从客户端调用该方法的异步方法。我想在 foreach 循环中迭代这个方法,但得到错误:
*Cannot convert from 'Microsoft.AspNetCore.Mvc.ActionResult' to 'System.Collections.Generic.IEnumerable<string>'*
UnitTest.cs
[TestFixture]
public class ClientUnitTests
{
private MessagesController Controller = new MessagesController(null, null, null);
[Test]
public async Task Check_API_Links()
{
// Arrange
List<IEnumerable<string>> reporteeList = new List<IEnumerable<string>>();
var links = await Controller.GetLinks();
reporteeList.Add(links); //Cannot convert from 'Microsoft.AspNetCore.Mvc.ActionResult' to 'System.Collections.Generic.IEnumerable<string>'
foreach (var itemLink in reporteeList)
{
reporteeList.Add(itemLink);
}
// Assert
Assert.IsNotNull(reporteeList);
Assert.GreaterOrEqual(0, reporteeList.Count);
Assert.IsInstanceOf<IEnumerable<string>>(reporteeList);
}
}
Controller.cs
[HttpGet]
public async Task<ActionResult> GetLinks()
{
var result = await _client.GetLinks();
return Ok(result);
}
Client.cs
public async Task<ActionResult<IEnumerable<string>>> GetLinks()
{
// Some logic here,
}
如何解决这个问题以在单元测试中迭代 GetLinks 方法?
谢谢。
【问题讨论】:
-
你需要把它包装到 ActionResult 中
标签: c# unit-testing asp.net-core .net-core