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

示例

全部展开

为 bank account 类创建一个 mock。

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

使用 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

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 方法,则该 mock 会继续返回重复的值。例如,请考虑某个银行帐户类的以下 mock。

    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 中推出