假设我有以下内容,我希望进行单元测试:
class Foo: IAMethods, IBMethods
{
// Implementation of IAMethods.A()
public int A()
{
return B() + 1;
}
// Implementation of IBMethods.B()
public int B()
{
return 1;
}
}
调用 A() 时如何模拟 B()?我假设该类的设计可能不正确。我有一种情况,我们有一个带有很多接口(interface)的服务层,偶尔一个服务层函数会调用另一个(使用相同或不同的接口(interface))。我不确定如何模拟其他服务层方法,因为您无法真正依赖地将某些内容注入(inject)到自身中。任何人都可以让我清楚地了解这种情况和建议吗?
最佳答案
看看 at partial mocks 的 Moq(RhinoMocks 有类似的东西)。至少你必须让它成为虚拟的。
public virtual int B()
{
return 1;
}
在你的测试...
Mock<Foo> mock = Mock<Foo>();
mock.Setup(m => m.B()).Returns(5);
int result = mock.Object.A(4);
Assert.That(result, Is.EqualTo(9));
C# 不允许混合,但您可以让每个接口(interface)由单独的类实现,然后顶级服务类可以通过组合将调用委托(delegate)给它们。
关于c# - mock 兄弟方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5739308/