c# – Rhino模拟一个抽象类,没有模拟它的虚方法?

我可以执行生活在使用Rhino Mocks嘲笑的抽象类的虚方法体吗?

要清楚,我不是试图模拟虚方法的行为.我正在尝试/测试/虚拟方法(在模拟类上).

这个想法是否明显滥用Rhino Mocks?

最佳答案
是的,这应该是绝对正常的.我不能说我已经尝试过了,但如果它失败了我会很惊讶.

编辑:我怀疑你想要PartialMock方法.这是一个例子:

using System;
using Rhino.Mocks;

public abstract class Abstract
{
    public virtual int Foo()
    {
        return Bar() * 2;
    }

    public abstract int Bar();        
}

class Test
{
    static void Main(string[] args)
    {
        MockRepository repository = new MockRepository();
        Abstract mock = repository.PartialMock<Abstract>();

        using (repository.Record())
        {
            Expect.Call(mock.Bar()).Return(5);
        }

        Console.WriteLine(mock.Foo()); // Prints 10
    }
}

编辑:或者在我第一次尝试AAA时:

using System;
using Rhino.Mocks;

public abstract class Abstract
{
    public virtual int Foo()
    {
        return Bar() * 2;
    }

    public abstract int Bar();        
}

class Test
{
    static void Main(string[] args)
    {
        // Arrange
        Abstract mock = MockRepository.GeneratePartialMock<Abstract>();
        mock.Stub(action => action.Bar()).Return(5);

        // Act
        int result = mock.Foo();

        // Assert
        mock.AssertWasCalled(x => x.Bar());
        // And assert that result is 10...
    }
}

转载注明原文:c# – Rhino模拟一个抽象类,没有模拟它的虚方法? - 代码日志