Main Content

verifyCalled

クラス: matlab.mock.TestCase
名前空間: matlab.mock

特定の入力値を使用してメソッドが呼び出されたことを検証

説明

verifyCalled(testcase,behavior) は、特定の入力値を使用してメソッドが呼び出されたことを検証します。

verifyCalled(testcase,behavior,diagnostic) は、さらに diagnostic の診断情報を検定に関連付けます。テスト フレームワークでは、テスト ランナーの構成に応じて検定にパスしたときか失敗したときに診断を表示する場合があります。既定では、フレームワークは検定に失敗したときにのみ診断を表示します。この既定の動作はテスト ランナーをカスタマイズしてオーバーライドできます。たとえば、失敗したイベントとパスしたイベントの両方の診断を表示するには、DiagnosticsOutputPlugin インスタンスを使用します。

入力引数

すべて展開する

テスト ケースのインスタンス。matlab.mock.TestCase オブジェクトとして指定します。

モックの動作。matlab.mock.MethodCallBehavior インスタンスとして指定します。matlab.mock.MethodCallBehavior のインスタンスを作成するには、behavior オブジェクトのメソッドを呼び出します。

例: withExactInputs(myMockBehavior.myMockedMethod)

表示する診断情報。string 配列、文字配列、関数ハンドル、または matlab.automation.diagnostics.Diagnostic オブジェクトとして指定します。診断値は、非スカラー値になることがあります。詳細については、matlab.automation.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);

入力 123 を使用して foo が呼び出されたことを検証します。

testCase.verifyCalled(behavior.foo(123));
Verification passed.

対話的に使用する暗黙的なインターフェイスをもつモックを作成します。インターフェイスには foo メソッドおよび bar メソッドを含めます。入力を指定して foo を呼び出します。

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

入力 456 を使用して foo が呼び出されたことを検証します。失敗時に診断情報を表示します。

testCase.verifyCalled(behavior.foo(456), ...
    'Method foo should have been called with input 456.');
Verification failed.
    ----------------
    Test Diagnostic:
    ----------------
    Method foo should have been called with input 456.
    ---------------------
    Framework Diagnostic:
    ---------------------
    verifyCalled 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)

bar がオブジェクトのみを入力として 1 回以上呼び出されたことを検証します。

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

ヒント

検証検定を使用して、例外をスローせずにエラーを生成して記録します。検証では例外がスローされないため、すべてのテスト内容は検証エラーが発生しても最後まで実行されます。通常の場合、検証はテストを早期終了する必要がないため、ユニット テストの主な検定となります。前提条件の違反や不適切なテスト設定がないかどうかをテストするには、他の検定タイプを使用します。

  • テスト環境がテスト エラーを回避するために必要な前提条件を満たしていることを確認するには、仮定検定を使用してください。仮定エラーが発生するとテストのフィルター処理が行われ、テスト フレームワークによってテストが Incomplete としてマークされます。

  • エラー条件によって現在のテスト内容の残りが無効になっても、それ以降のテスト メソッドは正しく実行される場合、アサーション検定を使用してください。アサーション地点におけるエラーによって、現在のテスト メソッドが失敗し不完全となります。

  • エラーが発生した場合にテスト セッションを中止するには、致命的なアサーション検定を使用してください。これらの検定は、エラー モードがあまりに根本的なものであり、テストを続行する意義がない場合に役立ちます。また、フィクスチャの破棄で MATLAB® の状態が正しく復元されず、テストを中止して新しいセッションを開始する方が望ましい場合にも有益です。

代替方法

verifyCalled メソッドの使用は、matlab.mock.constraints.WasCalled 制約を Verifiable クラスの verifyThat メソッドとあわせて使用するのと機能的には同じです。たとえば、次のコード ブロックは機能的に等価です。

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

% Using the WasCalled constraint with verifyThat method
import matlab.mock.constraints.WasCalled;
testCase.verifyThat(behavior.foo(123),WasCalled, ...
    'Method foo should have been called with input 123.');
ただし、WasCalled 制約を使用すると、さらに多くの機能を使用できます。たとえば、メソッドが特定の回数呼び出されたことを指定できます。

バージョン履歴

R2017a で導入