Как бросить исключение в новые носороги mocks 3.5

Я использую Rhino Mocks 3.5 и пытаюсь создать исключение в моем ожидании, чтобы проверить некоторые функции в моем блоке catch.

Но по какой-то причине это не исключение.

_xyz.stub(x => x.function(string)).throw(new exception("test string"));

Итак, я заглушаю вызов функции, чтобы вызвать исключение, но оно не вызывает исключение.

8
задан Alexander Stepaniuk 13 April 2013 в 11:29
поделиться

4 ответа

Я не уверен, почему это не работает на тебя. Я создал небольшой образец, и он отлично работает на меня. Взгляните на этот код:

Сначала я создал код, который хочу проверить.

public interface IXyz
{
    void Foo();
}

public class Xyz : IXyz
{
    public void Foo()
    {
    }
}

public class Sut
{
    public void Bar(IXyz xyz)
    {
        xyz.Foo();
    }
}

Далее я создам тестовый метод. В данном случае я использую MbUnit, но он должен работать с любым фреймворком юнит-тестирования.

    [Test]
    [ExpectedException(typeof(ArgumentException), Message = "test string")]
    public void BarFoo_Exception()
    {
        IXyz xyzStub = MockRepository.GenerateStub<IXyz>();
        xyzStub.Stub(x => x.Foo()).Throw(new ArgumentException("test string"));
        new Sut().Bar(xyzStub);
    }

Надеюсь, это поможет.

.
14
ответ дан 5 December 2019 в 06:23
поделиться

Возможно, вам понадобится разместить больше информации и больше исходного кода. Моя первая догадка заключается в том, что метод, который вы вставляете, никогда не будет попадать в потребителя.

По мере того, как вы проходите по коду, попадает ли место, где используется _xyz.function(string)?

.
2
ответ дан 5 December 2019 в 06:23
поделиться

Кажется, что если метод, который вы хотите создать исключение, имеет параметры, вам нужно добавить .IgnoreArguments () перед .Throw (новое исключение ()) .

Например, я обнаружил, что следующее НЕ генерирует исключение:

queue.Stub(x => x.Send(messageQueueTransaction, auditEvent)).Throw(new Exception());

Но следующее будет:

queue.Stub(x => x.Send(messageQueueTransaction, auditEvent)).IgnoreArguments().Throw(new Exception());

Поскольку метод генерации исключений Вадима не имел параметров, он работал без игнорирования аргументов.

9
ответ дан 5 December 2019 в 06:23
поделиться

Решение для меня было следующим:

_xyz.Stub(x => x.Function(null)).IgnoreArguments().Throw(new Exception("test string"));

Обратите внимание на вызов .IgnoreArguments().

1
ответ дан 5 December 2019 в 06:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: