При создании макета создается связанный объект поведения, который управляет макетом поведения. Используйте этот объект для доступа к перехваченным сообщениям, отправленным из тестируемого компонента в имитационный объект (процесс, известный как шпионаж). Дополнительные сведения о создании макета см. в разделе Создание макетного объекта.
В макетной структуре квалификации - это функции, используемые для проверки взаимодействий с объектом. Существует четыре вида квалификации:
Проверки - создание и регистрация отказов без исключения. Так как проверки не вызывают исключений, все содержимое теста выполняется до завершения даже при возникновении ошибок проверки. Как правило, проверки являются основной квалификацией для единичного теста, поскольку они обычно не требуют раннего выхода из теста. Используйте другие типы квалификации для проверки на нарушение предварительных условий или неправильной настройки теста.
Допущения - убедитесь, что среда тестирования соответствует предварительным условиям, которые в противном случае не приводят к отказу теста. Предполагаемые сбои приводят к отфильтрованным тестам, и платформа тестирования помечает тесты как неполные.
Утверждения - убедитесь, что состояние отказа аннулирует остальную часть текущего содержимого теста, но не препятствует надлежащему выполнению последующих методов тестирования. Сбой в точке утверждения помечает текущий метод тестирования как неуспешный и неполный.
Неустранимые утверждения - прервать тестовый сеанс при сбое. Эти требования полезны, когда режим отказа настолько фундаментален, что нет смысла продолжать тестирование. Эта квалификация также полезна, когда отрыв приспособления не восстанавливает состояние MATLAB ® правильно, и предпочтительно прервать тестирование и начать новую сессию.
Объект mock является реализацией абстрактных методов и свойств интерфейса, заданных суперклассом. Можно также создать макет без суперкласса, в этом случае макет имеет неявный интерфейс. Создайте макет с неявным интерфейсом для класса кости. Интерфейс включает в себя Color и NumSides свойства и roll метод, который принимает число костей и возвращает значение. Хотя интерфейс в настоящее время не реализован, с его помощью можно создать макет.
testCase = matlab.mock.TestCase.forInteractiveUse; [mock,behaviorObj] = testCase.createMock('AddedProperties', ... {'NumSides','Color'},'AddedMethods',{'roll'});
Так как макет записывает взаимодействия, отправленные ему, можно определить, что макет метод был вызван. Катите один штамп.
val = mock.roll(1);
Убедитесь, что roll способ был вызван с помощью 1 штамма.
testCase.verifyCalled(behaviorObj.roll(1))
Interactive verification passed.
Убедитесь, что roll метод был вызван с 3 кубиками. Тест завершается неуспешно.
testCase.verifyCalled(behaviorObj.roll(3), ... 'roll method should have been called with input 3.')
Interactive verification failed.
----------------
Test Diagnostic:
----------------
roll method should have been called with input 3.
---------------------
Framework Diagnostic:
---------------------
verifyCalled failed.
--> Method 'roll' was not called with the specified signature.
--> Observed method call(s) with any signature:
out = roll([1×1 matlab.mock.classes.Mock], 1)
Specified method call:
MethodCallBehavior
[...] = roll(<Mock>, 3)Убедитесь, что roll метод не вызывался с 2 кубиками.
testCase.verifyNotCalled(behaviorObj.roll(2))
Interactive verification passed.
С момента withAnyInputs, withExactInputs, и withNargout методы MethodCallBehavior возврат класса MethodCallBehavior объекты, их можно использовать в квалификациях. Убедитесь, что roll метод вызывался, по крайней мере, один раз с любыми входами.
testCase.verifyCalled(withAnyInputs(behaviorObj.roll))
Interactive verification passed.
Убедитесь, что roll метод не вызывался с 2 выходами и входами.
testCase.verifyNotCalled(withNargout(2,withAnyInputs(behaviorObj.roll)))
Interactive verification passed.
Аналогично вызовам методов, макет записывает набор свойств и операции доступа. Задайте цвет кости.
mock.Color = "red"mock =
Mock with properties:
NumSides: []
Color: "red"Убедитесь, что цвет задан.
testCase.verifySet(behaviorObj.Color)
Interactive verification passed.
Убедитесь, что был получен доступ к цвету. Этот тест завершается успешно, поскольку при отображении объекта MATLAB имеется неявный доступ к свойствам.
testCase.verifyAccessed(behaviorObj.Color)
Interactive verification passed.
Утверждайте, что количество сторон не было установлено.
testCase.assertNotSet(behaviorObj.NumSides)
Interactive assertion passed.
matlab.mock.TestCase методы удобны для шпионажа за имитационными взаимодействиями. Однако при использовании класса в matlab.mock.constraints вместо этого пакет. Чтобы использовать ограничение, передайте объект поведения и ограничение в verifyThat, assumeThat, assertThat или fatalAssertThat способ.
Создайте новый имитационный объект.
testCase = matlab.mock.TestCase.forInteractiveUse; [mock,behaviorObj] = testCase.createMock('AddedProperties', ... {'NumSides','Color'},'AddedMethods',{'roll'});
Ролл 2 кости. Затем используйте ограничение, чтобы проверить, что roll метод вызывался, по крайней мере, один раз с двумя костями.
val = mock.roll(2);
import matlab.mock.constraints.WasCalled
testCase.verifyThat(behaviorObj.roll(2),WasCalled)Interactive verification passed.
Катите один штамп. Затем убедитесь, что roll метод вызывался, по крайней мере, дважды с любыми входами.
val = mock.roll(1); testCase.verifyThat(withAnyInputs(behaviorObj.roll), ... WasCalled('WithCount',2))
Interactive verification passed.
Убедитесь, что NumSides не был получен доступ.
import matlab.mock.constraints.WasAccessed
testCase.verifyThat(behaviorObj.NumSides,~WasAccessed)Interactive verification passed.
Задайте цвет кости. Затем проверьте, что свойство было установлено один раз.
mock.Color = "blue"; import matlab.mock.constraints.WasSet testCase.verifyThat(behaviorObj.Color,WasSet('WithCount',1))
Interactive verification passed.
Доступ к Color собственность. Затем убедитесь, что доступ к нему был получен только один раз. Тест завершается неуспешно.
c = mock.Color
testCase.verifyThat(behaviorObj.Color,~WasAccessed('WithCount',1))c =
"blue"
Interactive verification failed.
---------------------
Framework Diagnostic:
---------------------
Negated WasAccessed failed.
--> Property 'Color' was accessed the prohibited number of times.
Actual property access count:
1
Prohibited property access count:
1
Specified property access:
PropertyGetBehavior
<Mock>.ColorЗадайте количество сторон. Затем убедитесь, что количество сторон установлено равным 22.
mock.NumSides = 22;
testCase.verifyThat(behaviorObj.NumSides,WasSet('ToValue',22))Interactive verification passed.
Использовать ограничение из matlab.unittest.constraints пакет, утверждающий, что количество сторон кости не превышает 20. Тест завершается неуспешно.
import matlab.unittest.constraints.IsLessThanOrEqualTo testCase.verifyThat(behaviorObj.NumSides, ... WasSet('ToValue',IsLessThanOrEqualTo(20)))
Interactive verification failed.
---------------------
Framework Diagnostic:
---------------------
WasSet failed.
--> Property 'NumSides' was not set to the specified value.
--> Observed property set(s) to any value:
<Mock>.NumSides = 22
Specified property set:
PropertySetBehavior
<Mock>.NumSides = <IsLessThanOrEqualTo constraint>| Тип квалификации | TestCase Метод | matlab.mock.constraints Класс | |
|---|---|---|---|
Использовать matlab.unittest.TestCase Метод | С matlab.mock.constraints Класс | ||
| Вызван метод | verifyCalled или verifyNotCalled | verifyThat | WasCalled или Occurred |
assumeCalled или assumeNotCalled | assumeThat | ||
assertCalled или assertNotCalled | assertThat | ||
fatalAssertCalled или fatalAssertNotCalled | fatalAssertThat | ||
| Метод вызывался некоторое количество раз | Неприменимо | verifyThat, assumeThat, assertThat, или fatalAssertThat | WasCalled |
| Доступ к свойству был получен | verifyAccessed или verifyNotAccessed | verifyThat | WasAccessed или Occurred |
assumeAccessed или assumeNotAccessed | assumeThat | ||
assertAccessed или assertNotAccessed | assertThat | ||
fatalAssertAccessed или fatalAssertNotAccessed | fatalAssertThat | ||
| Доступ к свойству осуществлялся определенное количество раз | Неприменимо | verifyThat, assumeThat, assertThat, или fatalAssertThat | WasAccessed |
| Свойство установлено | verifySet или verifyNotSet | verifyThat | WasSet или Occurred |
assumeSet или assumeNotSet | assumeThat | ||
assertSet или assertNotSet | assertThat | ||
fatalAssertSet или fatalAssertNotSet | fatalAssertThat | ||
| Свойство задавалось определенное количество раз | Неприменимо | verifyThat, assumeThat, assertThat, или fatalAssertThat | WasSet |
| Свойству присвоено определенное значение | Неприменимо | verifyThat, assumeThat, assertThat, или fatalAssertThat | WasSet или Occurred |
| Были вызваны методы, а свойства были доступны или установлены в определенном порядке | Неприменимо | verifyThat, assumeThat, assertThat, или fatalAssertThat | Occurred |