【问题标题】:How can I test for null arguments in the constructor of abstract class using rhino mocks?如何使用 rhino 模拟测试抽象类的构造函数中的空参数?
【发布时间】:2011-01-04 04:18:15
【问题描述】:

我有这样的课:

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。

我错过了什么?

【问题讨论】:

    标签: .net constructor nunit rhino-mocks arguments


    【解决方案1】:

    我自己最近也遇到了这个问题,不幸的是我无法找到任何方法来告诉 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();
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2012-04-28
      • 1970-01-01
      • 2011-07-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多