gpt4 book ai didi

c# - 如何绕过 RhinoMocks 模拟中方法的执行?

转载 作者:行者123 更新时间:2023-11-30 14:19:49 24 4
gpt4 key购买 nike

我使用 RhinoMocks 进行了一个非常简单的测试(我不得不说我是初学者)。我试着像这样模拟我的对象

var mock = MockRepository.GenerateMock<MyClass>();

创建一个助手 stub :

var stubLinkedObject = MockRepository.GenerateStub<MyClass>();

然后执行一些逻辑,应该使用我的 stub 参数调用类 MyClass 的方法 AddLink。在测试结束时,我简单地断言这个方法实际上是用

调用的
mockAction.AssertWasCalled(a => a.AddLink(stubLinkedObject));

我注入(inject)了正确的依赖项,并且实际调用了该方法。然而,问题是 MyClass 中的 real 实现被调用并导致崩溃,因为某些逻辑无法执行(链接集合不可用等)。我怎样才能绕过执行并简单地检查是否调用了一个方法?我试过类似的东西

mockAction.Stub(a => a.AddLink(null)).IgnoreArguments().Do(null);

在我进入执行之前但这似乎不起作用(我只得到一些异常(exception))。有什么想法,也可能解释为什么 mock 正在执行方法逻辑吗?

最佳答案

我试过重现。这是适合我的代码

[Test]
public void Test()
{
var classMock = MockRepository.GenerateMock<MyClass>();
var linkedMock = MockRepository.GenerateStub<MyClass>();

classMock.Expect(c => c.MyMethod(linkedMock));

classMock.MyMethod(linkedMock);

classMock.AssertWasCalled(c => c.MyMethod(linkedMock));
}

public class MyClass
{
public virtual void MyMethod(MyClass linkedClass)
{
Console.WriteLine("MyMethod is called");
}
}

关于c# - 如何绕过 RhinoMocks 模拟中方法的执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2220465/

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