如何模拟在多个 类 中定义的具有相同名称的方法
How to mock a method that is defined in multiple classes with same name
我有一个工厂方法
public abstract class PFact
{
public abstract ResponseMessage P(Model request);
}
我有不同的 classes 覆盖此方法。
public class one : PFact
{
public override ResponseMessage P(Model request)
{
return response
}
}
public class Two : PFact
{
public override ResponseMessage P(Model request)
{
return response
}
}
在另一个 class 中,我使用
调用这些方法
var result = _F["One"].P(model);
var result2 = _F["Two"].P(model);
我试图模拟结果和结果 2,但无法完成。
我正在尝试
var mock = new Mock<PFact>()
mock.Setup(x => x.P(model)).Returns(response);
这不是在嘲笑那些 class 第一和第二。
我如何明确提及两个 classes 以分别模拟以编写测试用例。
我需要模拟 result 和 result2。请给我建议!
Moq 库(我假设您正在使用)只能在具体 classes 上提供虚拟方法的模拟实现。
如果您将 PFact
中的抽象方法更改为虚拟方法:
public virtual ResponseMessage P(Model request) {}
然后您可以为每个 class 创建一个模拟并提供不同的实现。
我有一个工厂方法
public abstract class PFact
{
public abstract ResponseMessage P(Model request);
}
我有不同的 classes 覆盖此方法。
public class one : PFact
{
public override ResponseMessage P(Model request)
{
return response
}
}
public class Two : PFact
{
public override ResponseMessage P(Model request)
{
return response
}
}
在另一个 class 中,我使用
调用这些方法 var result = _F["One"].P(model);
var result2 = _F["Two"].P(model);
我试图模拟结果和结果 2,但无法完成。 我正在尝试
var mock = new Mock<PFact>()
mock.Setup(x => x.P(model)).Returns(response);
这不是在嘲笑那些 class 第一和第二。
我如何明确提及两个 classes 以分别模拟以编写测试用例。 我需要模拟 result 和 result2。请给我建议!
Moq 库(我假设您正在使用)只能在具体 classes 上提供虚拟方法的模拟实现。
如果您将 PFact
中的抽象方法更改为虚拟方法:
public virtual ResponseMessage P(Model request) {}
然后您可以为每个 class 创建一个模拟并提供不同的实现。