- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要模拟我的 IVehicleRecordsRepository
进行一些测试。所以这是 repo 接口(interface):
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()
的相同值作为返回?
最小起订量版本:4.7.99.0
最佳答案
我没有用过Moq,所以请原谅我的无知。
在您的行为声明中:
var testVeh = await mockRepo.Object.StoreAsync(vr);
您只是传递车辆记录 ('vr'),但您的模拟对象设置为还需要 Guid.NewGuid(),对吗?
mockRepo.Setup(repo => repo.StoreAsync(It.IsAny<VehicleRecord>(), Guid.NewGuid()))
会不会是它不符合预期,因此从不调用“(mockObject.)ReturnsAsync”方法?
你有没有试过做这样的事情:
var guid = Guid.NewGuid;
VehicleRecord vr = new VehicleRecord(newVehicle, guid);
var testVeh = await mockRepo.Object.StoreAsync(vr, guid);
或者,也许稍微简化一下,将您的 mockObject 更改为不期望 Guid,因为您只传递 VehicleRecord:
mockRepo.Setup(repo => repo.StoreAsync(It.IsAny<VehicleRecord>()))
关于c# - 使用 ReturnsAsync 设置,需要返回传入的值但得到 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45950228/
我目前正在将 API 重构为异步操作,我需要重构异步测试。我有与 Moq documentation 类似的案例: // returning different values on each invo
我使用最小起订量。我模拟了一个类,它的方法如下所示: public async Task DoSomething() { // do something... } 我的设置如下: SomeMo
我正在尝试像那样模拟存储库的方法 public async Task GetByTypeValue(WhitelistType type, string value) 使用 Moq ReturnsAs
我正在尝试 Mock一个Interface有一个 Task方法。 同样的问题,虽然我似乎无法让代码对我有利:Setup async Task callback in Moq Framework 我的界
我需要模拟我的 IVehicleRecordsRepository 进行一些测试。所以这是 repo 接口(interface): public interface IVehicleRecordsRe
在使用 ReturnsAsync 时,我们只能让它返回一个新对象。下面的代码有没有更好/更正确的写法? 在这个例子中,我们有某种存储库,我们的实现接受了一个具有 Id 的 Thing 类型的对象(我们
我是一名优秀的程序员,十分优秀!