加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 08:28:37 所属栏目:百科 来源:网络整理
导读:我可以执行生活在使用Rhino Mocks嘲笑的抽象类的虚方法体吗? 要清楚,我不是试图模拟虚方法的行为.我正在尝试/测试/虚拟方法(在模拟类上). 这个想法是否明显滥用Rhino Mocks? 解决方法 是的,这应该是绝对正常的.我不能说我已经尝试过了,但如果它失败了我会
我可以执行生活在使用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...
    }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读