exponenta event banner

fatalAssertCalled

Класс: matlab.mock.StartCase
Пакет: matlab.mock

Фатально утверждать, что метод был вызван с определенными входными значениями

Описание

пример

fatalAssertCalled(testcase,behavior) фатально утверждает, что метод был вызван с определенными входными значениями.

пример

fatalAssertCalled(testcase,behavior,diagnostic) также связывает диагностическую информацию в diagnostic с квалификацией. В зависимости от конфигурации тестового питателя платформа тестирования может отображать диагностику при прохождении или сбое квалификации. По умолчанию инфраструктура отображает диагностику только при сбое квалификации. Поведение по умолчанию можно переопределить, настроив тестовый питатель. Например, используйте DiagnosticsOutputPlugin для отображения диагностики сбоев и прохождения событий.

Входные аргументы

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

Экземпляр тестового случая, указанный как matlab.mock.TestCase объект.

Поведение макета, указанного как matlab.mock.MethodCallBehavior экземпляр. Создание экземпляра matlab.mock.MethodCallBehaviorвызовите метод объекта поведения.

Пример: withExactInputs(myMockBehavior.myMockedMethod)

Отображаемая диагностическая информация, указанная как строковый массив, символьный массив, дескриптор функции или matlab.unittest.diagnostics.Diagnostic объект. Диагностические значения могут быть нескалярными. Дополнительные сведения см. в разделе matlab.unittest.diagnostics.Diagnostic.

Пример: "My diagnostic message."

Пример: @() datetime('now')

Примеры

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

Создание макета с неявным интерфейсом для интерактивного использования. Интерфейс включает в себя foo и bar методы. Звонить foo путем задания входных данных.

testCase = matlab.mock.TestCase.forInteractiveUse;
[mock,behavior] = testCase.createMock('AddedMethods',["foo","bar"]);
mock.foo(123);

Смертельно утверждать, что foo был вызван с вводом 123.

testCase.fatalAssertCalled(behavior.foo(123));
Fatal assertion passed.

Создание макета с неявным интерфейсом для интерактивного использования. Интерфейс включает в себя foo и bar методы. Звонить foo путем задания входных данных.

testCase = matlab.mock.TestCase.forInteractiveUse;
[mock,behavior] = testCase.createMock('AddedMethods',["foo","bar"]);
mock.foo(123);

Смертельно утверждать, что foo был вызван с вводом 456. Отображение диагностической информации при отказе.

testCase.fatalAssertCalled(behavior.foo(456), ...
    'Method foo should have been called with input 456.');
Fatal assertion failed.
    ----------------
    Test Diagnostic:
    ----------------
    Method foo should have been called with input 456.
    ---------------------
    Framework Diagnostic:
    ---------------------
    fatalAssertCalled failed.
    --> Method 'foo' was not called with the specified signature.
    --> All observed method call(s) with any signature are:
            foo([1×1 matlab.mock.classes.Mock], 123)
    
    Specified method call:
    MethodCallBehavior
        [...] = foo(<Mock>, 456)
Fatal assertion failed.

Смертельно утверждать, что bar вызывался по крайней мере один раз только с объектом в качестве входных данных.

testCase.fatalAssertCalled(withExactInputs(behavior.bar), ...
    'Method bar should have been called.');
Fatal assertion failed.
    ----------------
    Test Diagnostic:
    ----------------
    Method bar should have been called.
    ---------------------
    Framework Diagnostic:
    ---------------------
    fatalAssertCalled failed.
    --> Method 'bar' was never called.
    
    Specified method call:
    MethodCallBehavior
        [...] = bar(<Mock>)
Fatal assertion failed.

Совет

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

  • Используйте условия проверки для создания и записи отказов без создания исключения. Так как проверки не вызывают исключений, все содержимое теста выполняется до завершения даже при возникновении ошибок проверки. Как правило, проверки являются основной квалификацией для единичного теста, поскольку они обычно не требуют раннего выхода из теста. Используйте другие типы квалификации для проверки на нарушение предварительных условий или неправильной настройки теста.

  • Для проверки соответствия среды тестирования предварительным условиям, которые в противном случае не приведут к сбою теста, используйте квалификационные требования. Предполагаемые отказы приводят к отфильтрованным тестам, и платформа тестирования помечает тесты как Incomplete.

  • Используйте условия утверждения, когда условие отказа аннулирует остальную часть текущего содержимого теста, но не препятствует надлежащему выполнению последующих методов тестирования. Сбой в точке утверждения помечает текущий метод тестирования как неуспешный и неполный.

Альтернативы

Использование fatalAssertCalled функционально эквивалентен использованию matlab.mock.constraints.WasCalled ограничение с помощью fatalAssertThat способ FatalAssertable класс. Например, следующие кодовые блоки функционально эквивалентны.

% Using the fatalAssertCalled method
testCase.fatalAssertCalled(behavior.foo(123), ...
    'Method foo should have been called with input 123.')

% Using the WasCalled constraint with fatalAssertThat method
import matlab.mock.constraints.WasCalled;
testCase.fatalAssertThat(behavior.foo(123),WasCalled, ...
    'Method foo should have been called with input 123.');
Однако при использовании WasCalled ограничение. Например, можно указать метод, который вызывался определенное количество раз.

Представлен в R2017a