指定模拟对象的行为
当您创建一个模拟,您将创建一个关联的行为控制模拟对象的行为。使用这个对象来定义模拟方法和财产的行为(存根)。在创建一个模拟的更多信息,见创建模拟对象。
模拟对象的实现抽象接口指定一个超类的方法和属性。您还可以构建一个模拟超类,在这种情况下,模拟了一个隐式接口。
创建一个模拟与隐式接口。接口包括的名字
和ID
属性和一个findUser
方法,该方法接受一个标识符,并返回一个名字。而接口是目前未实现,您可以创建一个模拟。
testCase = matlab.mock.TestCase.forInteractiveUse;[模拟,behaviorObj] = testCase.createMock (“AddedProperties”,…{“名字”,“ID”},“AddedMethods”,{“findUser”});
定义模拟方法的行为
您可以指定一个模拟方法返回特定值或在不同的情况下抛出异常。
指定,当findUser
与任何输入方法被调用时,它返回“未知”
。默认情况下,MATLAB®当你调用返回一个空数组findUser
方法。
的
assignOutputsWhen
方法定义了方法调用的返回值。嘲笑的方法调用(
behaviorObj.findUser
)隐式地创建了一个MethodCallBehavior
对象。的
withAnyInputs
的方法MethodCallBehavior
对象指定的行为也适用于一个方法调用与任意数量的输入任何值。
testCase.assignOutputsWhen (withAnyInputs (behaviorObj.findUser),“未知”)n = mock.findUser (1)
n =“未知”
指定输入值为1701时,模拟方法返回“吉姆”
。这种行为取代的回归“未知”
输入值的1701只因为它是在规范定义。
testCase.assignOutputsWhen (behaviorObj.findUser (1701),“吉姆”)n = mock.findUser (1701)
n = "吉姆"
指定,当findUser
方法只有对象作为输入,模拟方法返回“未指定的ID”
。的withExactInputs
的方法MethodCallBehavior
对象指定对象的行为也适用于一个方法调用作为唯一的输入值。
testCase.assignOutputsWhen (withExactInputs (behaviorObj.findUser),…“未指定的ID”)n = mock.findUser%相当于n = findUser(模拟)
n =“不明身份”
你可以使用类的matlab.unittest.constraints
包来帮助定义行为。指定findUser
抛出一个异常时,称为ID大于5000。
进口matlab.unittest.constraints.IsGreaterThantestCase.throwExceptionWhen (behaviorObj.findUser (IsGreaterThan (5000)));n = mock.findUser (5001)
错误使用matlab.mock.internal.MockContext / createMockObject mockMethodCallback(第323行)以下方法调用指定抛出一个异常:findUser ([1×1 matlab.mock.classes。模拟),5001)
您可以定义行为基于输出的数量在方法调用请求。如果两个输出值方法调用请求,返回“? ?”
的名称和ID 1。
testCase.assignOutputsWhen (withNargout (2…withAnyInputs (behaviorObj.findUser)),“? ?”1)[n, id] = mock.findUser (13)
n = " ? ? " id = 1
定义模拟财产行为
模拟访问属性时,您可以指定它返回特定或存储属性值。在设置中,您可以指定当模拟存储属性值。您还可以定义当模拟的测试框架将抛出一个异常属性集或访问活动。
当定义模拟财产的行为,记住,在命令窗口中显示属性值是一个属性访问(得到)操作。
类似于定义行为模拟方法,定义模拟财产行为需要的一个实例PropertyBehavior
类。框架返回该类的实例,当你访问一个模拟的财产。定义访问行为,使用的一个实例PropertyGetBehavior
通过调用得到
的方法PropertyBehavior
类。定义设置行为,使用的一个实例PropertySetBehavior
通过调用集
或setToValue
的方法PropertyBehavior
类。
指定,当的名字
属性设置为任意值,测试框架将抛出一个异常。
的
throwExceptionWhen
方法指示指定的框架来抛出异常的行为。访问行为对象的一个属性
PropertyBehavior
类(behaviorObj.Name
)创建一个PropertyBehavior
类实例。的调用
集
的方法PropertyBehavior
类创建一个PropertySetBehavior
。
testCase.throwExceptionWhen(设置(behaviorObj.Name))模拟。Name =“苏”;
错误使用matlab.mock.internal.MockContext / createMockObject mockPropertySetCallback(第368行)以下属性集指定抛出一个异常:<模拟>。Name = "苏"
允许模拟商店当属性设置的值“大卫”
。
testCase.storeValueWhen (setToValue (behaviorObj.Name,“大卫”));模拟。的名字=“大卫”
模拟=模拟与属性:名称:“大卫”ID: []
定义重复和随后的行为
的matlab.mock.TestCase
方法是方便定义行为。然而,有更多的功能,当你使用一个类matlab.mock.actions
包。使用这些类,您可以定义行为,多次重复相同的动作,指定后续行动。定义重复或后续行为,通过一个类的一个实例matlab.mock.actions
包的当
行为类的方法。
分配1138的ID属性的值,然后抛出异常属性访问。
进口matlab.mock.actions.AssignOutputs进口matlab.mock.actions.ThrowException当((behaviorObj.ID),然后(AssignOutputs (1138), ThrowException)) id =模拟。ID ID = mock.ID
id = 1138错误使用matlab.mock.internal.MockContext / createMockObject mockPropertyGetCallback(第346行)以下属性访问指定抛出一个异常:<模拟> .ID
分配的价值1138,然后237的ID属性。然后,抛出一个异常属性访问。每一个调用然后
方法接受两个动作。指定更多的后续行动,使用多个调用然后
。
当((behaviorObj.ID),那么(AssignOutputs (1138),…然后(AssignOutputs (237)、ThrowException))) id =模拟。ID ID = mock.IDid = mock.ID
id = 1138 id = 237错误使用matlab.mock.internal.MockContext / createMockObject / mockPropertyGetCallback(第346行)以下属性访问指定抛出一个异常:<模拟> .ID
如果对象是唯一的输入值,指定findUser
函数返回的值“菲尔”
两次。
当(withExactInputs (behaviorObj.findUser)重复(2,AssignOutputs (“菲尔”)))n =模拟。findUsern = mock.findUser
n =“菲尔”=“菲尔”
第三次调用该函数。如果你重复一个动作,不遵循调用然后
方法,模拟继续返回重复的值。
n = mock.findUser
n =“菲尔”
为设置的值定义的行为的名字
。抛出一个异常第一然后储存价值的两倍。
进口matlab.mock.actions.StoreValue当(设置(behaviorObj.Name),那么(重复(2,ThrowException) StoreValue))模拟。Name =“约翰。”
错误使用matlab.mock.internal.MockContext / createMockObject mockPropertySetCallback(第368行)以下属性集指定抛出一个异常:<模拟>。Name = "约翰"
模拟。的名字=“一分钱”
错误使用matlab.mock.internal.MockContext / createMockObject mockPropertySetCallback(第368行)以下属性集指定抛出一个异常:<模拟>。Name = "钱"
模拟。的名字=“汤米”
模拟=模拟与属性:名称:“汤米”
总结的行为
行为 | TestCase 方法 |
matlab.mock.Actions 类(允许重复和后续行为的定义) |
---|---|---|
返回指定值的方法调用和属性访问。 | assignOutputsWhen |
AssignOutputs |
访问属性时返回存储值。 | returnStoredValueWhen |
ReturnStoredValue |
存储在属性设置的值。 | storeValueWhen |
StoreValue |
调用方法时抛出异常或者当属性设置或访问。 | throwExceptionWhen |
ThrowException |
另请参阅
matlab.mock.TestCase
|matlab.mock.actions.AssignOutputs
|matlab.mock.actions.ReturnStoredValue
|matlab.mock.actions.StoreValue
|matlab.mock.actions.ThrowException