повторение

Класс: matlab.mock.actions.
Пакет: matlab.mock.actions

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

Синтаксис

repeat(n,action)

Описание

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

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

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

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

Пример 5

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

Пример: ThrowException

Пример: ThrowException(MException('Account:deposit:Negative','Deposit amount must be positive.'))

Примеры

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

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

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