微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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...
    }
}

原文地址:https://www.jb51.cc/csharp/243711.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐