メインコンテンツ

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");

    例外をスローするアクションを 2 回繰り返した場合、次のコードではフレームワークが引き続き例外をスローし、3 回目のプロパティ取得を実行します。

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

    一方、次のコードは例外を 2 回スローしてから、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 で導入