【发布时间】:2022-11-14 12:37:40
【问题描述】:
尝试使用 Moq 模拟对该接口(其中的一部分)的调用...
Task<T> StoreAsync<T>(
IAuthUser user,
T model,
IDataModel relative = null,
IDictionary<string, object> args = null)
where T : class, IDataModel;
我想要一个成功通话的“设置”
mockModelService.Setup(s => s.StoreAsync(It.IsAny<IAuthUser>(), It.IsAny<PaymentModel>(), It.IsAny<IDataModel>(), It.IsAny<IDictionary<string, object>>()))
.ReturnsAsync((IAuthUser u, PaymentModel m, IDataModel d, IDictionary<string, object> c) =>
{
m.Id++;
return m;
});
我的目标是为在指定模型类型时引发异常的覆盖进行“设置”
// Notably the DuplicatePaymentCheck implements a static implicit constructor that takes a PaymentModel as parameter
mockModelService.Setup(s => s.StoreAsync<DuplicatePaymentCheck>(
It.IsAny<IAuthUser>(), It.IsAny<DuplicatePaymentCheck>(), null, null))
.ThrowsAsync(
new ValidationException(40003, "Invalid", "DUPLICATE!"));
但是,我的代码没有编译,因为我有一个不明确的调用。我怎样才能正确地嘲笑这个?
(顺便说一句,我检查了the similar Q&A,但看不到与这种情况的联系)
【问题讨论】: