Как я могу проверить нулевые аргументы в конструкторе абстрактного класса, используя насмешки носорога? - PullRequest
0 голосов
/ 12 января 2010

У меня есть такой класс:

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

Я хочу написать тест, который проверяет, что если я передаю ноль, исключение выдается:

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

, но тест продолжает проваливаться с исключением, а не ожидаемым исключением. Я также попытался обернуть вызов в блок try catch, но та же проблема. Я пробовал GenerateStub и PartialMock.

Чего мне не хватает?

1 Ответ

2 голосов
/ 01 марта 2010

Я недавно столкнулся с этой проблемой сам, к сожалению, я не смог найти никакого способа, чтобы сказать 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();
    }
}
...