繁体   English   中英

模拟为模型 C# 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM