Main Content

matlab.mock.constraints.WasAccessed 类

包: matlab.mock.constraints

用于确定属性访问情况的约束

说明

如果实际值不是 PropertyBehavior 实例,或者 PropertyBehavior 对应属性的访问次数不是指定的次数,则 WasAccessed 约束将发生验证失败。

属性的访问次数包括 MATLAB® 隐式访问该属性的次数。例如,如果您显示 mock 对象,MATLAB 会访问对象属性以显示其值。

构造

constraint = WasAccessed 提供了一个约束,用以确定属性的访问情况。如果属性至少被访问过一次,则满足该约束。要验证属性未被访问过,可使用波浪号 (~) 运算符对 WasAccessed 约束求反。

constraint = WasAccessed('WithCount',n) 提供了一个约束,当属性的访问次数恰好为 n 次时,将满足该约束。

如果您通过此语法对 WasAccessed 求反,则当属性的访问次数不等于 n 时,约束将通过。例如,如果属性被访问四次,~WasAccessed('WithCount',3) 将通过,~WasAccessed('WithCount',4) 将失败。

输入参数

全部展开

属性的访问次数,指定为整数。

属性

全部展开

属性访问计数,以整数形式返回。一旦约束构造完毕,此属性即变成只读属性。您可以在构造约束的过程中指定它。

复制语义

值。要了解值类如何影响复制操作,请参阅复制对象

示例

全部折叠

为 person 类创建一个 mock。

testCase = matlab.mock.TestCase.forInteractiveUse;
[fakePerson,behavior] = testCase.createMock('AddedProperties',["Name" "Age"]);
fakePerson.Name = 'David';
fprintf(1,'The person''s name is %s.\n',fakePerson.Name);
The person's name is David.

构造通过用例。

import matlab.mock.constraints.WasAccessed
testCase.verifyThat(behavior.Name,WasAccessed)
Interactive verification passed.
testCase.verifyThat(behavior.Age,~WasAccessed)
Interactive verification passed.
testCase.verifyThat(behavior.Name,WasAccessed('WithCount',1))
Interactive verification passed.

构造失败用例。

testCase.verifyThat(behavior.Name,~WasAccessed)
Interactive verification failed.

---------------------
Framework Diagnostic:
---------------------
Negated WasAccessed failed.
--> Property 'Name' was unexpectedly accessed 1 time(s).

Specified property access:
    PropertyGetBehavior
        <Mock>.Name
testCase.verifyThat(behavior.Age,WasAccessed)
Interactive verification failed.

---------------------
Framework Diagnostic:
---------------------
WasAccessed failed.
--> Property 'Age' was never accessed.

Specified property access:
    PropertyGetBehavior
        <Mock>.Age
testCase.verifyThat(behavior.Name,WasAccessed('WithCount',5))
Interactive verification failed.

---------------------
Framework Diagnostic:
---------------------
WasAccessed failed.
--> Property 'Name' was not accessed the expected number of times.
    
    Actual property access count:
             1
    Expected property access count:
             5

Specified property access:
    PropertyGetBehavior
        <Mock>.Name

版本历史记录

在 R2017a 中推出