Main Content

createMock

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

创建 mock 对象

语法

[mock,behavior] = createMock(testcase)
[mock,behavior] = createMock(testcase,superclass)
[mock,behavior] = createMock(___,Name,Value)

说明

[mock,behavior] = createMock(testcase) 创建一个 mock 对象以及与之相关联的行为对象。

[mock,behavior] = createMock(testcase,superclass) 创建一个派生自 superclass 类的 mock。

[mock,behavior] = createMock(___,Name,Value) 创建一个 mock,并通过一个或多个 Name,Value 对组参量指定其他选项。您可将此语法与上述语法中的任何参量一起使用。

输入参数

全部展开

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

mock 的超类,指定为标量 matlab.metadata.Class 对象。mock 对象实现此类的所有抽象属性和方法。

示例: ?MyIterfaceClass

示例: ?MException

名称-值参数

将可选的参量对组指定为 Name1=Value1,...,NameN=ValueN,其中 Name 是参量名称,Value 是对应的值。名称-值参量必须出现在其他参量之后,但参量对组的顺序无关紧要。

在 R2021a 之前,使用逗号分隔每个名称和值,并用引号将 Name 引起来。

例如,[mock,behavior] = testCase.createMock('AddedProperties',{'Prop1','Prop2'}) 创建一个 mock,并向其中添加 Prop1Prop2 属性。

要添加到 mock 中的方法名称,指定为字符串数组或字符向量元胞数组。除非 mock 是严格 mock,或者 mock 的行为已定义,否则对该 mock 调用这些方法将返回空数组。

示例: ["methodA","methodB","methodC"]

示例: {'method1','method2'}

要添加到 mock 中的属性名称,指定为字符串数组或字符向量元胞数组。如果 mock 不是严格 mock,则您可以设置并获取其值。但是,如果 mock 是严格 mock,则当您设置或获取属性值时,默认情况下 MATLAB® 会生成断言失败。

示例: "MyProperty"

示例: {'Prop1','Prop2'}

要添加到 mock 的事件的名称,指定为字符串数组或字符向量元胞数组。要向 mock 对象添加事件,该 mock 对象必须从句柄类派生。

示例: "MyEvent"

示例: {'Event1','Event2'}

默认属性值,指定为标量结构体。使用此名称-值对组参量来指定由 mock 对象类实现的属性的默认值。这些属性包括 Abstract 超类属性以及使用 'AddedProperties' 名称-值对组参量添加的属性。每个字段表示在 mock 类上实现的一个属性的名称,对应的值表示该属性的默认值。

示例: struct('PropA',123,'PropB',true)

要模拟的方法,使用字符串数组或字符向量元胞数组形式的方法名称指定。要指定不模拟任何方法,请使用指定为 string.empty{} 的空值。默认情况下,模拟所有方法。

MockedMethods 可以包括任何可覆盖(即 Sealed 属性值为 false)的添加的方法、抽象超类方法以及具体超类方法的子集。一般情况下,您只包括那些您要对其使用 stub 或 spy 的方法。

指定 MockedMethods 使测试能够只模拟那些对测试用例有用的方法。当超类定义了许多方法时,限制要模拟的方法可以提高测试性能。

示例: ["foo" "bar"]

数据类型: char | string | cell

指示 mock 是否是严格 mock,指定为 falsetrue。默认情况下,如果未定义行为,mock 方法将返回空数组。如果您将 Strict 设置为 true,该框架会对以下项的未定义行为生成断言失败:

  • 指定接口的所有 abstract 方法和属性。

  • 使用 AddedMethods 参量添加到该 mock 的方法。

  • 使用 AddedProperties 参量添加到该 mock 的属性。

数据类型: logical

要传递给 superclass 构造函数的输入,指定为值的元胞数组。

示例: 如果您在构造的 mock 中将 superclass 定义为 ?MException,则 'ConstructorInputs' 可能是 {'My:ID','My message'}

输出参量

全部展开

superclass 输入指定的接口的抽象方法和属性的实现,以 mock 对象的形式返回。如果构造 mock 时未定义超类,则它不会具有显式接口。

注意:不能保存和加载 mock 对象。

mock 行为的定义,以行为对象的形式返回。使用 behavior 定义 mock 操作,并验证交互。

注意:不能保存和加载 behavior 对象。

示例

全部展开

创建一个供交互测试的测试用例。

testCase = matlab.mock.TestCase.forInteractiveUse;

构造一个严格 mock。

[mock,behavior] = testCase.createMock('AddedMethods',"foo",'Strict',true);

构造一个具有特定方法的 mock。

[mock,behavior] = testCase.createMock('AddedMethods',...
    {'one','two','three'});

构造一个具有特定事件的 mock。

[mock,behavior] = testCase.createMock(?handle,'AddedEvents',...
    {'EventA','EventB'});

构造一个具有构造函数输入的 mock。

[mock,behavior] = testCase.createMock(?MException,'ConstructorInputs',...
    {'My:ID','My message'});

构造一个具有两个属性的 mock。Prop2 的默认值为 false

mock = testCase.createMock('AddedProperties',{'Prop1','Prop2'},...
    'DefaultPropertyValues',struct('Prop2',false))
mock = 

  Mock with properties:

    Prop1: []
    Prop2: 0

构造一个模拟,该模拟覆盖 double 类的 isnanisinf 方法。

[mock,behavior] = testCase.createMock(?double,"MockedMethods",["isnan","isinf"],...
    "ConstructorInputs",{123});

版本历史记录

在 R2017a 中推出

全部展开