Контроллер:
private IBeer _beerService;
public BeerController(IBeer beerService)
{
_beerService = beerService;
}
[HttpPost]
public async Task<IActionResult> Post([FromBody]Beer model)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
var beer = await _beerService.Add(model);
return Ok(CreatedAtAction("Add Item", new { beer.id }, beer));
}
Модель:
public class Beer
{
public int id { get; set; }
public string name { get; set; }
public int cost { get; set; }
}
Интерфейс:
public interface IBeer
{
Task<Beer> Add(Beer beer);
}
Тест:
[Fact]
public void TestPostWithMock()
{
// Arrange
var serviceMock = new Mock<IBeer>();
List<Beer> expected = new List<Beer>()
{
new Beer{id=2, beer="Kingfisher", cost=170 },
};
serviceMock.Setup(x => x.Add(expected)).Returns(() => Task.FromResult(beer));
var controller = new BeerController(serviceMock.Object);
// Act
var result = controller.Get(2);
// Assert
var okResult = result.Should().BeOfType<OkObjectResult>().Subject;
var actual = okResult.Value.Should().BeAssignableTo<IEnumerable<Beer>>().Subject;
Assert.Equal(expected, actual);
}
Я пытаюсь смоделировать почтовый запрос, но когда пытаюсь смоделировать его здесь:
x => x.Add(expected)
Это дает мне ошибку - Generic.list не может быть преобразован в Controller.Beer. Что должно быть сделано?