gpt4 book ai didi

c# - 模拟兄弟方法

转载 作者:行者123 更新时间:2023-11-30 17:18:28 25 4
gpt4 key购买 nike

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

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对于最小起订量(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# - 模拟兄弟方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5739308/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com