1

我只需要模拟 Method1 来测试我的流程异常。我怎么能这样做?

public interface IFoo
{
    void Method1();
    object Method2();
}
public class Foo : IFoo
{
    public void Method1()
    {
        // Do something
    }

    public object Method2()
    {
        try
        {
            // Do something
            Method1();
            // Do somenthing

            return new object();
        }
        catch (Exception ex)
        {
            // Process ex
            return null;
        }
    }
}
4

2 回答 2

4
fooMock =  MockRepository.GenerateStub<IFoo>();
fooMock.Stub(x => x.Method1()).Return("Whatever");
于 2009-08-12T20:06:56.590 回答
0

界面是红鲱鱼。您必须模拟实现 Foo 并将 Method1 更改为虚拟:

...
public virtual void Method1()
...

使用 throw 扩展来创建您希望处理的异常:

var fooMock = MockRepository.GenerateStub<Foo>();
fooMock.Expect(foo => foo.Method1()).Throw(new Exception());

var actual = fooMock.Method2();
Assert.IsNull(actual);

fooMock.VerifyAllExpectations();
于 2009-08-12T20:41:44.880 回答