Main Content

throwExceptionWhen

类: matlab.mock.TestCase
命名空间: matlab.mock

对方法调用或属性交互引发异常

语法

throwExceptionWhen(testcase,behavior)
throwExceptionWhen(testcase,behavior,exception)

说明

throwExceptionWhen(testcase,behavior) 指定在调用方法或者访问或设置属性时,该 mock 应引发异常。

throwExceptionWhen(testcase,behavior,exception) 指定 mock 引发的异常。

输入参数

全部展开

测试用例的实例,指定为 matlab.mock.TestCase 对象。

mock 的行为,指定为 matlab.mock.MethodCallBehaviormatlab.mock.PropertyGetBehaviormatlab.mock.PropertySetBehavior 实例。要创建 matlab.mock.MethodCallBehavior 实例,请调用行为对象的方法。要创建 matlab.mock.PropertyGetBehavior 实例,请对行为对象的属性调用 get 方法。要创建 matlab.mock.PropertySetBehavior 实例,请对行为对象的属性调用 set 方法。

示例: withExactInputs(behavior.myMockedMethod)

示例: get(behavior.MyMockedProperty)

示例: set(behavior.MyMockedProperty)

在出现方法调用或属性交互时框架要引发的异常,指定为标量 MException 对象。

示例: MException('MyProduct:myID','My exception message.')

示例

全部展开

在调用方法或者访问或设置属性时引发异常。

testCase = matlab.mock.TestCase.forInteractiveUse;
[mock,behavior] = testCase.createMock('AddedProperties',"PropertyFoo", ...
    'AddedMethods',"methodBar");
testCase.throwExceptionWhen(get(behavior.PropertyFoo));
testCase.throwExceptionWhen(set(behavior.PropertyFoo), ...
    MException('PropertyFoo:set', 'Do not change PropertyFoo'));
testCase.throwExceptionWhen(withAnyInputs(behavior.methodBar));

% Carry out actions
mock.PropertyFoo
mock.PropertyFoo = 123;
mock.methodBar;

备选方法

使用 throwExceptionWhen 方法在功能上等同于对 MethodCallBehaviorPropertyGetBehaviorPropertySetBehavior 类的 when 方法使用 matlab.mock.actions.ThrowException 动作。例如,以下代码块在功能上是等效的。

% Using the throwExceptionWhen method
testCase.throwExceptionWhen(behavior.deposit(IsLessThan(0)), ...
    MException('Account:deposit:Negative', ...
    'Deposit amount must be positive.'));

% Using the ThrowException action with the when function
import matlab.mock.actions.ThrowException
when(behavior.deposit(IsLessThan(0)),ThrowException( ...
    MException('Account:deposit:Negative', ...
    'Deposit amount must be positive.')))
不过,在使用 ThrowException 动作时,会有更多功能。例如,您可以为相同的模拟对象交互指定不同的后续行为。

版本历史记录

在 R2017a 中推出