假设我有以下内容,我希望进行单元测试:

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/

10-12 21:27