unit-testing - "Self-mocking"使用 Rhino Mocks

标签 unit-testing mocking rhino-mocks

我有一种情况,我遇到过好几次,但从来没有找到好的答案。假设我有一个如下所示的类,其中一个方法调用同一个类中的另一个方法:

public class Foo
{
    public int Bar()
    {
        if (Baz())
        {
            return 1;
        }
        else
        {
            return 2;
        }
    }

    public virtual bool Baz()
    {
        // behavior to be mocked
    }
}

我想根据 Baz() 的返回值对方法 Bar() 的行为进行单元测试。如果 Baz() 在不同的类中,我会调用 PartialMock 以在该类上设置模拟行为,但是当在测试类本身上使用 PartialMock 时它似乎不起作用。是否有捷径可寻?我错过了什么?

我正在使用 Rhino Mocks 3.5 和 .NET 2.0。

最佳答案

您可以使用 stub 来模拟 Baz 方法。如果您使用的是 .NET 3.5,您将使用 lambda,但对于 .NET 2.0,您将使用匿名委托(delegate),如下例所示:

Foo f = MockRepository.GenerateStub<Foo>();
// lambda:
// f.Stub(x => x.Baz()).Return(true);
// anonymous delegate:
f.Stub(delegate(Foo x) { return x.Baz(); }).Return(true);
Console.WriteLine(f.Bar());

关于unit-testing - "Self-mocking"使用 Rhino Mocks,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1908280/

相关文章:

javascript - QUnit/Sinon 测试异步 ajax 调用如果 http 错误则抛出异常

unit-testing - 类型错误 : Cannot read property 'contextTypes' of undefined

python - 在修补导入的模块时模拟返回 ImportError

python - 如何在 Python 中模拟从另一个类导入的类方法的返回值?

c# - Rhino Mocks,每次执行 stub 方法时返回不同的结果

unit-testing - Rhino 模拟,MbUnit : Best way to check if object has raised an event

oop - 与依赖项隔离的单元测试值对象

google-analytics - 是否可以运行查询的模拟数据分析工具?

c# - Rhino 使用 FakeItEasy 模拟 'Expect'

c++ - 无法使用现有代码在 Netbean C++ 项目中添加测试