Main Content

repeat

클래스: matlab.mock.actions.ThrowException
네임스페이스: matlab.mock.actions

예외 발생시키기 반복

구문

repeat(action,n)

설명

repeat(action,n)은 동일한 동작을 n번 반복합니다. 입력 인수를 임의의 순서로 지정할 수 있습니다. 즉, repeat(action,n)repeat(n,action)은 둘 다 동작을 n번 반복합니다.

입력 인수

모두 확장

정의된 동작으로, matlab.mock.actions.ThrowException의 인스턴스로 지정됩니다.

예: action = ThrowException

예: action = ThrowException(MException('Account:deposit:Negative','Deposit amount must be positive.'))

동작 반복 횟수로, 정수로 지정됩니다.

예: 5

예제

모두 확장

은행 계좌 클래스에 대한 모의 객체를 만듭니다.

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), ...
    ThrowException().repeat(2).then(AssignOutputs(false)))

모의 객체를 사용합니다.

isAccountOpen = mock.isOpen

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

Error using matlab.mock.internal.MockContext/createMockObject/mockMethodCallback (line 382)
The following method call was specified to throw an exception:
	isOpen([1×1 matlab.mock.classes.Mock])
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),ThrowException().repeat(2))
    tf = mock.IsJointAccount
    tf = mock.IsJointAccount
    tf = mock.IsJointAccount

    그러나 다음 코드는 예외를 두 번 발생시키고, false를 반환합니다.

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

버전 내역

R2017a에 개발됨