1
我從頭開始一個新項目。目前,我正在通過設計一些元素並試圖儘早實施單元測試。這個問題,單元測試失敗,因爲控制器動作看起來是空響應。在觀察窗口中,actionResult
顯示「表達式計算器中出現內部錯誤」,contentResult
爲空。爲什麼這個控制器的操作結果爲空?
我該如何解決這個問題?
的xUnit 2.2.0.3545,起訂量4.7.63.0
這裏是單元測試(的xUnit):
// Used in the unit tests
private List<City> cities = new List<City>
{
new City { City_Name = "Chicago", City_Code = 1 },
new City { City_Name = "New York", City_Code = 2 },
new City { City_Name = "Seattle", City_Code = 3 }
};
[Fact]
public async Task Get_AllCities_PropertiesArePopulated()
{
// Arrange
var mockService = new Mock<ICityService>();
mockService.Setup(x => x.GetCities()).ReturnsAsync(this.cities);
var controller = new CityController(mockService.Object);
// Act
IHttpActionResult actionResult = await controller.GetCities();
var contentResult = actionResult as OkNegotiatedContentResult<List<City>>;
foreach (var city in contentResult.Content)
{
// doesn't get here due to .Content being null.
}
}
這是我的控制器:
public class CityController : ApiController
{
private readonly ICityService cityService;
public CityController(ICityService svc)
{
this.cityService = svc;
}
public async Task<IHttpActionResult> GetCities()
{
var cities = await this.cityService.GetCities();
if (!cities.Any())
{
return this.BadRequest();
}
return this.Ok(cities);
}
}
服務接口:
public interface ICityService
{
Task<IEnumerable<City>> GetCities();
}
嘗試調用'。結果'on'actionResult'因爲'GetCities'返回一個'Task' –
Kyle
@Kyle - actionResult,Status = RanToCompletion,Result =「System.Web.Http.Results.OkNegotiatedContentResult'1 [System.Collections.Generic.IEnumerable'1 [X.Y.Z.Entities.City]]」。這看起來是正確的,但contentResult仍然爲空。 – DenaliHardtail
@DenaliHardtail那是因爲你正在鑄造錯誤的類型 – Nkosi