如何使用rhino mocks在抽象类的构造函数中测试null参数?

时间:2010-01-12 13:05:04

标签: .net constructor nunit rhino-mocks arguments

我有一个类似的课程:

public abstract class ClassA<T>
{
    protected ClassA(IInterface interface)
    {
    if (interface== null)
            {
            throw new ArgumentNullException ("interface");
            }
    }
}

我想写一个测试,它验证如果我在抛出异常时传递null:

[Test]
[ExpectedException (typeof (ArgumentNullException))]
public TestMethod()
{
    ClassA classa = MockRepository.GenerateMock<ClassA<String>> (null);
}

但是测试会因异常而不是预期的异常而失败。我也尝试在try catch块中包装调用,但同样的问题。我试过GenerateStub和PartialMock。

我错过了什么?

1 个答案:

答案 0 :(得分:2)

我自己最近遇到过这个问题,遗憾的是我无法找到任何方法告诉Rhino不要自己包装异常。到目前为止,我能想出的最好成绩如下:

[Test]
[ExpectedException(typeof(ArgumentNullException))]
public void TestMethod()
{
    try
    {
        ClassA classa = _mocks.CreateMock<ClassA>(null);
    }
    catch (Exception e)
    {
        if (e.InnerException != null)
        {
            throw e.InnerException;
        }
    }
    finally
    {
        _mocks.ReplayAll();
    }
}