请查看下面的代码,这是我的单元测试的一部分:

mockPersonFactory.Setup(m => m.Create()).Returns(PersonFactory());

public IPerson PersonFactory()
{
    IPerson iPerson = new Person();
    return iPerson;
}


应当多次调用PersonFactory(因为它包含在要测试的代码的循环中)。但是,不是每次在循环中创建新的Person而是每次都重复使用同一个人对象。如何确保在每个循环上创建一个新的Person?

最佳答案

您的代码只是说“将PersonFactory()的返回值用作Create()的返回值”。相反,您需要指示它每次调用PersonFactory()以获得返回值。使用接受lambda的Returns重载:

mockPersonFactory.Setup(m => m.Create()).Returns(() => PersonFactory());


或者只是:

mockPersonFactory.Setup(m => m.Create()).Returns(PersonFactory);

关于c# - 如何确保在每个循环上创建一个新的Person?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44524079/

10-13 06:24