![](/img/trans.png)
[英]C# – Mocking a method to return a different value when called a second time using Moq
[英]Mocking a method to assign value to field in Model C# Moq
我需要向模型添加一个方法,该方法给定一些参数,为模型的一个字段分配一个值。
public class ModelName: SomeModel<ModelName>, IModelName
{
[Field]
public string SomeField{ get; set; }
[Field]
public string FieldSetByMethod{ get; set; }
public new async Task MethodToSetField(string parameter)
{
var someClassInstance = new SomeExternalClass(parameter);
FieldSetByMethod = someClassInstance(parameter).method();
}
}
现在,当我在编写单元测试时,我想有一种方法来检查这个MethodToSetField
被调用。 但是,我实际上不能真正调用MethodToSetField
方法,因为创建SomeExternalClass
是不可取的(例如,因为它创建了唯一 ID)。
我对 C# 和 Moq 都没有真正的经验。 我怎样才能模拟这个函数,使它的行为或多或少像这样:
ModelNameInstance.Setup(c => c.MethodToSetField("Parameter")).Assigns(FieldSetByMethod,"DummyValue");
或者我可以以某种方式重构代码/编写测试以模仿这种行为?
您可以将ISomeExternalClass
注入这个类然后模拟它,并针对模拟进行测试,或者如果你不能这样做 - 将ISomeExternalClassFactory
注入这个类然后模拟它。 ISomeExternalClassFactory
模拟将返回的模拟ISomeExternalClass
,你可以设置和测试反对。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.