C# 模拟为模型C Moq中的字段赋值的方法

C# 模拟为模型C Moq中的字段赋值的方法,c#,unit-testing,moq,C#,Unit Testing,Moq,我需要向模型添加一个方法,该方法在给定一些参数的情况下为模型的一个字段指定一个值 public class ModelName: SomeModel<ModelName>, IModelName { [Field] public string SomeField{ get; set; } [Field] public string FieldSetByMethod{ get; set; } public new async Task Met

我需要向模型添加一个方法,该方法在给定一些参数的情况下为模型的一个字段指定一个值

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();
    }
}
或者我可以以某种方式重新构造代码/编写测试,以模仿这种行为

您可以将ISomeExternalClass注入该类,然后对其进行模拟,并针对模拟进行测试,或者如果您不能这样做,则可以将ISomeExternalClassFactory注入该类,然后对其进行模拟。ISomeExternalClassFactory mock将返回一个ISomeExternalClass的模拟,您可以对其进行设置和测试

ModelNameInstance.Setup(c => c.MethodToSetField("Parameter")).Assigns(FieldSetByMethod,"DummyValue");