createMock
类: matlab.mock.TestCase
命名空间: matlab.mock
创建 mock 对象
语法
[mock,behavior] = createMock(testcase)
[mock,behavior] = createMock(testcase,superclass)
[mock,behavior] = createMock(___,Name,Value)
说明
[
创建一个 mock 对象以及与之相关联的行为对象。mock
,behavior
] = createMock(testcase
)
[
创建一个派生自 mock
,behavior
] = createMock(testcase
,superclass
)superclass
类的 mock。
[
创建一个 mock,并通过一个或多个 mock
,behavior
] = createMock(___,Name,Value
)Name,Value
对组参量指定其他选项。您可将此语法与上述语法中的任何参量一起使用。
输入参数
testcase
— 测试用例的实例
matlab.mock.TestCase
对象
测试用例的实例,指定为 matlab.mock.TestCase
对象。
superclass
— mock 的超类
标量 matlab.metadata.Class
对象
mock 的超类,指定为标量 matlab.metadata.Class
对象。mock 对象实现此类的所有抽象属性和方法。
示例: ?MyIterfaceClass
示例: ?MException
名称-值参数
将可选的参量对组指定为 Name1=Value1,...,NameN=ValueN
,其中 Name
是参量名称,Value
是对应的值。名称-值参量必须出现在其他参量之后,但参量对组的顺序无关紧要。
在 R2021a 之前,使用逗号分隔每个名称和值,并用引号将 Name
引起来。
例如,[mock,behavior] = testCase.createMock('AddedProperties',{'Prop1','Prop2'})
创建一个 mock,并向其中添加 Prop1
和 Prop2
属性。
AddedMethods
— 要添加到 mock 中的方法名称
字符串数组 | 字符向量元胞数组
要添加到 mock 中的方法名称,指定为字符串数组或字符向量元胞数组。除非 mock 是严格 mock,或者 mock 的行为已定义,否则对该 mock 调用这些方法将返回空数组。
示例: ["methodA","methodB","methodC"]
示例: {'method1','method2'}
AddedProperties
— 要添加到 mock 中的属性
字符串数组 | 字符向量元胞数组
要添加到 mock 中的属性名称,指定为字符串数组或字符向量元胞数组。如果 mock 不是严格 mock,则您可以设置并获取其值。但是,如果 mock 是严格 mock,则当您设置或获取属性值时,默认情况下 MATLAB® 会生成断言失败。
示例: "MyProperty"
示例: {'Prop1','Prop2'}
AddedEvents
— 要添加到 mock 的事件
字符串数组 | 字符向量元胞数组
要添加到 mock 的事件的名称,指定为字符串数组或字符向量元胞数组。要向 mock 对象添加事件,该 mock 对象必须从句柄类派生。
示例: "MyEvent"
示例: {'Event1','Event2'}
DefaultPropertyValues
— 默认属性值
标量结构体
默认属性值,指定为标量结构体。使用此名称-值对组参量来指定由 mock 对象类实现的属性的默认值。这些属性包括 Abstract
超类属性以及使用 'AddedProperties'
名称-值对组参量添加的属性。每个字段表示在 mock 类上实现的一个属性的名称,对应的值表示该属性的默认值。
示例: struct('PropA',123,'PropB',true)
MockedMethods
— 要模拟的方法
模拟所有可能的方法 (默认) | string.empty
| {}
| 字符串数组 | cellstr
要模拟的方法,使用字符串数组或字符向量元胞数组形式的方法名称指定。要指定不模拟任何方法,请使用指定为 string.empty
或 {}
的空值。默认情况下,模拟所有方法。
MockedMethods
可以包括任何可覆盖(即 Sealed
属性值为 false
)的添加的方法、抽象超类方法以及具体超类方法的子集。一般情况下,您只包括那些您要对其使用 stub 或 spy 的方法。
指定 MockedMethods
使测试能够只模拟那些对测试用例有用的方法。当超类定义了许多方法时,限制要模拟的方法可以提高测试性能。
示例: ["foo" "bar"]
数据类型: char
| string
| cell
Strict
— 指示 mock 是否是严格 mock
false
(默认) | true
指示 mock 是否是严格 mock,指定为 false
或 true
。默认情况下,如果未定义行为,mock 方法将返回空数组。如果您将 Strict
设置为 true
,该框架会对以下项的未定义行为生成断言失败:
指定接口的所有
abstract
方法和属性。使用
AddedMethods
参量添加到该 mock 的方法。使用
AddedProperties
参量添加到该 mock 的属性。
数据类型: logical
ConstructorInputs
— 要传递给 superclass
构造函数的输入
值的元胞数组
要传递给 superclass
构造函数的输入,指定为值的元胞数组。
示例: 如果您在构造的 mock 中将 superclass
定义为 ?MException
,则 'ConstructorInputs'
可能是 {'My:ID','My message'}
。
输出参量
mock
— 抽象方法和属性的实现
mock 对象
由 superclass
输入指定的接口的抽象方法和属性的实现,以 mock 对象的形式返回。如果构造 mock 时未定义超类,则它不会具有显式接口。
注意:不能保存和加载 mock 对象。
behavior
— mock 行为的定义
行为对象
mock 行为的定义,以行为对象的形式返回。使用 behavior
定义 mock 操作,并验证交互。
注意:不能保存和加载 behavior 对象。
示例
构造 mock
创建一个供交互测试的测试用例。
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
类的 isnan
和 isinf
方法。
[mock,behavior] = testCase.createMock(?double,"MockedMethods",["isnan","isinf"],... "ConstructorInputs",{123});
版本历史记录
在 R2017a 中推出MATLAB 命令
您点击的链接对应于以下 MATLAB 命令:
请在 MATLAB 命令行窗口中直接输入以执行命令。Web 浏览器不支持 MATLAB 命令。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)