MSTest,我收到结果.状态码200,但是结果.值为空



我检查了这个结果。结果是OkResultObject,它的状态是200,但是当我得到结果。值,它是空的。我犯了什么错误吗?

[TestMethod]
public void GetArtById_WithExisting_ReturnExpectedItem()
{
// arrange
ItemDto expected = new ItemDto()
{
Id = random.Next(),
Name = Guid.NewGuid().ToString()
};
serviceStub.Setup(service => service.GetItemById(It.IsAny<int>())).Returns(expected);
var controller = new ItemsController(serviceStub.Object);
// act
var result = controller.GetItemById(random.Next());
//assert
result.Value.Should().BeEquivalentTo(expected, options => options.ComparingByMembers<ItemDto>());
}

错误:

Error Message:
Expected t to be PRODUCTSERVICE.API.Dtos.ItemDto
{
Id = 892888091,
Name = "68319208-3f5a-442d-954e-bc45dc7cfe48",
}, but found <null>.
With configuration:
- Use declared types and members
- Compare enums by value
- Compare tuples by their properties
- Compare anonymous types by their properties
- Compare records by their members
- Compare PRODUCTSERVICE.API.Dtos.ItemDto by its members
- Match member by name (or throw)
- Be strict about the order of items in byte arrays
- Without automatic conversion.

我发现我需要在获得值之前将其转换为OkResultObject。

[TestMethod]
public void GetItemById_WithExisting_ReturnExpected()
{
// arrange
var expected = CreateRandomItem();
serviceStub.Setup(service => service.GetItemById(It.IsAny<int>())).Returns(expected);
var controller = new ItemsController(serviceStub.Object);
// act
var result = controller.GetItemById(random.Next());
//assert
result.Result.Should().BeOfType<OkObjectResult>();
var ok = (OkObjectResult)result.Result;
ok.Value.Should().BeEquivalentTo(expected, options => options.ComparingByMembers<ItemDto>());
}