0
我需要模擬我的IVehicleRecordsRepository
進行一些測試。因此,這裏的回購接口:使用ReturnsAsync進行設置,需要返回值的傳遞,但得到空值
public interface IVehicleRecordsRepository
{
Task<VehicleRecord> StoreAsync(VehicleRecord veh, Guid? userId = null);
//...
}
,現在我試着模擬它的xUnit的測試,以便StoreMethod()
應該返回傳遞作爲一個參數的值相同。下面是測試這種情況下的測試:
[Fact]
public async Task ShouldGetValueFromMockedMethod()
{
var mockRepo = new Mock<IVehicleRecordsRepository>();
mockRepo
.Setup(repo => repo.StoreAsync(It.IsAny<VehicleRecord>(), Guid.NewGuid()))
.ReturnsAsync((VehicleRecord veh, Guid userId) => veh)
// tried this too -> .Returns((VehicleRecord veh, Guid userId) => Task.FromResult(veh))
;
VehicleRecord vr = new VehicleRecord(newVehicle, Guid.NewGuid());
var testVeh = await mockRepo.Object.StoreAsync(vr);
Assert.NotNull(testVeh); // ====> FAILS HERE
Assert.AreEqual(vr, testVeh);
}
所以,我怎樣才能得到我的回報傳入StoreAsync()
相同的值?
Moq版本:4.7.99.0
另外,作爲Moq的人指出我可以設置它像這樣(可空): ''' mockRepo .Setup(回購=> repo.StoreAsync(It.IsAny(),It.IsAny ())) .ReturnsAsync((VehicleRecord veh,Guid uid)=> veh) ''' –
alvipeo