如何使用 rhino 模拟测试抽象类的构造函数中的空参数?

发布于 2024-08-18 02:59:49 字数 589 浏览 4 评论 0原文

我有一个像这样的类:

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。

我缺少什么?

I have a class like so:

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

I want to write a test which verifies that if I pass null in the exception is thrown:

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

but the test keeps failing with an exception rather than the exception being expected. I also tried wrapping the call in a try catch block, but same issue. I tried GenerateStub and PartialMock.

What am I missing?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

沉鱼一梦 2024-08-25 02:59:49

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

I've recently run into this issue myself, unfortunately I haven't been able to find any way to tell Rhino not to wrap the exception itself. Thus far, the best I've been able to come up with would be as follows:

[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();
    }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文