повторение

Класс: matlab.mock.actions. Выдача исключения
Пакет: matlab.mock.actions

Повторите то же действие многократно

Синтаксис

повторитесь (n, действие)

Описание

repeat(n,action) повторяет то же действие многократно.

Входные параметры

развернуть все

Число раз, чтобы повторить действие, заданное как целое число.

Пример 5

Заданное действие, заданное как экземпляр matlab.mock.actions.ThrowException Выдача исключения.

Пример: Выдача исключения

Пример: ThrowException (MException ('Account:deposit:Negative', 'Сумма вклада должна быть положительной'.))

Примеры

развернуть все

Создайте макет для класса банковского счета.

testCase = matlab.mock.TestCase.forInteractiveUse;
[mock,behavior] = testCase.createMock('AddedMethods',"isOpen");

Задайте поведение.

import matlab.mock.actions.ThrowException
import matlab.mock.actions.AssignOutputs
when(withExactInputs(behavior.isOpen),then(repeat(2,ThrowException), ...
    then(AssignOutputs(false))));

Используйте макет.

isAccountOpen = mock.isOpen
Error using matlab.mock.internal.MockContext>mockMethodCallback (line 663)
The following method call was specified to throw an exception:
	isOpen([1×1 matlab.mock.classes.Mock])

Error in matlab.mock.internal.MockContext>@(data)mockMethodCallback(data,catalog) (line 282)
            methodCallback = @(data)mockMethodCallback(data, catalog);
isAccountOpen = mock.isOpen
Error using matlab.mock.internal.MockContext>mockMethodCallback (line 663)
The following method call was specified to throw an exception:
	isOpen([1×1 matlab.mock.classes.Mock])

Error in matlab.mock.internal.MockContext>@(data)mockMethodCallback(data,catalog) (line 282)
            methodCallback = @(data)mockMethodCallback(data, catalog);
isAccountOpen = mock.isOpen
isAccountOpen =

  logical

   0

Советы

  • Если вы повторяете действие и не следуете за ним с вызовом метода then, макет продолжает возвращать повторное значение. Например, рассмотрите следующий макет для класса банковского счета.

    import matlab.mock.actions.ThrowException
    testCase = matlab.mock.TestCase.forInteractiveUse;
    [mock, behavior] = testCase.createMock('AddedProperties',"IsJointAccount");

    Если вы повторяете действие, чтобы выдать исключение дважды, среда продолжает выдавать исключение в следующем коде, который продолжает получать значение свойства в третий раз.

    when(get(behavior.IsJointAccount),then(repeat(2,ThrowException)));
    tf = mock.IsJointAccount
    tf = mock.IsJointAccount
    tf = mock.IsJointAccount

    Но следующий код выдает исключение дважды и возвраты false.

    import matlab.mock.actions.AssignOutputs
    when(get(behavior.IsJointAccount),then(repeat(2,ThrowException), ...
        then(AssignOutputs(false))));
    tf = mock.IsJointAccount
    tf = mock.IsJointAccount
    tf = mock.IsJointAccount

Введенный в R2017a

Была ли эта тема полезной?