主要内容

指定模拟对象的行为

当您创建一个模拟,您将创建一个关联的行为控制模拟对象的行为。使用这个对象来定义模拟方法和财产的行为(存根)。在创建一个模拟的更多信息,见创建模拟对象

模拟对象的实现抽象接口指定一个超类的方法和属性。您还可以构建一个模拟超类,在这种情况下,模拟了一个隐式接口。

创建一个模拟与隐式接口。接口包括的名字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 (2withAnyInputs (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

另请参阅

||||

相关的话题