Main Content

matlab.mock.InteractionHistory.forMock

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

从 mock 对象返回历史记录

说明

history = matlab.mock.InteractionHistory.forMock(mock) 从 mock 对象返回历史记录。history 是由 matlab.mock.InteractionHistory 对象组成的数组。history 中的每个元素对应一次方法调用、属性访问或属性修改。数组元素是有序的,第一个元素指示所记录的第一次交互。此方法仅返回与公共可见方法和属性的交互。例如,不会记录以下交互:

  • 调用 Hidden 方法

  • 调用 Sealed 超类方法

  • 访问或修改具体的超类属性

示例

输入参数

全部展开

要返回其交互历史记录的 mock,指定为 mock 对象。

示例

全部展开

使用 computeValue 方法和两个属性构建一个 mock 对象。为 Prop2 赋予默认值 false

tc = matlab.mock.TestCase.forInteractiveUse;
[mock,behavior] = tc.createMock( ...
    'AddedMethods',{'computeValue'}, ...
    'AddedProperties',{'Prop1','Prop2'}, ...
    'DefaultPropertyValues',struct('Prop2',false));

设置 computeValue 方法的行为,使其始终返回值 42,不管输入值是什么。

import matlab.mock.actions.AssignOutputs;
when(withAnyInputs(behavior.computeValue),AssignOutputs(42));

与该 mock 对象交互。首先调用 computeValue 方法。然后显示 Prop2 的值。最后,设置 Prop1 的值。

n = mock.computeValue('hello');
mock.Prop2
mock.Prop1 = 13;
ans =

  logical

   0

获取该 mock 对象的交互历史记录。

h = matlab.mock.InteractionHistory.forMock(mock)
h = 

  1×3 heterogeneous InteractionHistory (SuccessfulMethodCall, SuccessfulPropertyAccess, SuccessfulPropertyModification) array with properties:

    Name

Interaction summary:
  computeValue([1×1 matlab.mock.classes.Mock], 'hello')
  <Mock>.Prop2
  <Mock>.Prop1 = 13

检查第一个 InteractionHistory 对象。该方法是使用 mock 对象和字符向量 'hello' 作为输入调用的。该方法输出值 42。

h(1)
ans = 

  SuccessfulMethodCall with properties:

       Name: "computeValue"
     Inputs: {[1×1 matlab.mock.classes.Mock]  'hello'}
    Outputs: {[42]}

Interaction summary:
  computeValue([1×1 matlab.mock.classes.Mock], 'hello')

备选方法

您可以对 matlab.mock.TestCase 实例使用 getMockHistory 方法获取同样的交互历史记录。例如,如果您有一个 matlab.mock.TestCase 实例 tc 和一个 mock 对象 mock,则以下方法调用是等效的。

h = matlab.mock.InteractionHistory.forMock(mock);
h = tc.getMockHistory(mock);

但是,您不需要访问 matlab.mock.TestCase 实例来使用 forMock 方法。

版本历史记录

在 R2018a 中推出