matlab.mock.constraints. Произошедший класс

Пакет: matlab.mock.constraints
Суперклассы:

Ограничение, квалифицирующее взаимодействия фиктивного объекта

Описание

Ограничение Occurred квалифицирует возникновение одного или нескольких взаимодействий фиктивного объекта. Это производит отказ проверки для любого массива фактического значения, который задает по крайней мере одно взаимодействие, которое не произошло. Фактическое значение должно быть массивом MethodCallBehavior, PropertyGetBehavior, или PropertySetBehavior возражает, что все обращаются к тому же фиктивному объекту.

Используйте ограничение Occurred, чтобы квалифицировать любую комбинацию вызовов метода, доступов к свойству или модификаций свойства.

По умолчанию ограничение квалифицирует это все, взаимодействия произошли, по крайней мере, однажды и в любом порядке. Пара "имя-значение" RespectingOrder включает проверку, что взаимодействия произошли в заданном порядке.

Конструкция

constraint = matlab.mock.constraints.Occurred обеспечивает ограничение, которое определяет, произошли ли все заданные взаимодействия.

constraint = matlab.mock.constraints.Occurred('RespectingOrder',tf) обеспечивает ограничение, которое уважает порядок возникновения заданных взаимодействий.

Входные параметры

развернуть все

Уважать ли порядок взаимодействий, заданных как false или true. По умолчанию ограничение не требует, чтобы взаимодействия произошли в заданном порядке.

Типы данных: логический

Свойства

развернуть все

Это свойство доступно только для чтения.

Уважает ли ограничение порядок взаимодействий, сохраненных как false или true. Свойство RespectOrder является false по умолчанию, но может быть установлено в true во время конструкции ограничения при помощи пары "имя-значение" 'RespectingOrder'.

Типы данных: логический

Примеры

свернуть все

Создайте макет для класса человека.

testCase = matlab.mock.TestCase.forInteractiveUse;
[fakePerson,behavior] = testCase.createMock("AddedProperties",["Name","Age"], ...
    "AddedMethods","speak");

Используйте макет путем вызова метода speak, доступа к свойству Age и установки свойства Name.

fakePerson.speak("hello");
age = fakePerson.Age;
fakePerson.Name = "Zed";

Проверьте, что вызов метода speak с входным параметром "hello" произошел.

import matlab.mock.constraints.Occurred;
testCase.verifyThat(behavior.speak("hello"),Occurred)
Verification passed.

Проверьте, что к свойству Age получили доступ, метод speak был вызван "hello", и свойство Name было установлено в "Zed".

testCase.verifyThat([get(behavior.Age), ...
    behavior.speak("hello"), ...
    behavior.Name.setToValue("Zed")],Occurred)
Verification passed.

Повторите верификацию, но потребуйте, чтобы ограничение было удовлетворено, только если взаимодействия произошли в заданном порядке. Этот тест перестал работать, потому что метод speak был назван, прежде чем свойство Age было установлено.

testCase.verifyThat([get(behavior.Age), ...
    behavior.speak("hello"), ...
    behavior.Name.setToValue("Zed")],Occurred('RespectingOrder',true))
Verification failed.

    ---------------------
    Framework Diagnostic:
    ---------------------
    Occurred failed.
    --> All specified interactions occurred.
    --> The interactions did not occur in the specified order.
        Actual order:
            speak([1×1 matlab.mock.classes.Mock], "hello")
            <Mock>.Age
            <Mock>.Name = "Zed"
    
    Specified interactions:
      1×3 heterogeneous InteractionBehavior (PropertyGetBehavior, MethodCallBehavior, PropertySetBehavior) array with no properties.
    
        <Mock>.Age
        [...] = speak(<Mock>, "hello")
        <Mock>.Name = "Zed"

Повторите верификацию и укажите, что взаимодействия должны произойти в различном порядке.

testCase.verifyThat([behavior.speak("hello"), ...
    get(behavior.Age), ...
    behavior.Name.setToValue("Zed")],Occurred('RespectingOrder',true))
Verification passed.

Представленный в R2018b

Была ли эта тема полезной?