Я использую .NET Core с xUnit / Moq для создания модульных тестов.Я хотел бы создать модульный тест для следующего вызова API:
[HttpGet("{zip}")]
public IActionResult Get(int zip)
{
//debugging here shows the repository has the object
//but the result is always null
Location result = repository[zip];
if(result == null)
{
return NotFound();
}
else
{
return Ok(result);
}
}
У меня есть модульный тест (который не выполняется):
[Fact]
public void Api_Returns_Json_Object()
{
//Arrange
Mock<IRepository> mockRepo = new Mock<IRepository>();
mockRepo.Setup(m => m.Locations).Returns(new Location[]
{
new Location
{
zip = 88012,
type = "STANDARD",
state = "NM"
}
});
//Arrange
ApiController controller = new ApiController(mockRepo.Object);
// Act
var response = controller.Get(88012);
// Assert
Assert.True(response.Equals(HttpStatusCode.OK));
}
Когда я отлаживаю, репозиторий показываетправильный Location
объект, но результат всегда равен нулю, возвращая код состояния NotFound()
.
Если я проверяю ответ с помощью PostMan, он работает правильно.
Вот соответствующие IRepository
участники:
IEnumerable<Location> Locations { get; }
Location this[int zip] { get; }