Main Content

matlab.mock.constraints.Occurred クラス

名前空間: matlab.mock.constraints
スーパークラス:

モック オブジェクトの相互作用を検定する制約

説明

Occurred 制約は、1 つ以上のモック オブジェクトの相互作用の発生を検定します。これにより、発生しなかった相互作用を少なくとも 1 つ指定する実際の値の配列について、検定エラーが生成されます。実際の値は、すべて同じモック オブジェクトを参照している MethodCallBehavior オブジェクト、PropertyGetBehavior オブジェクトまたは PropertySetBehavior オブジェクトの配列でなければなりません。

Occurred 制約を使用して、メソッドの呼び出し、プロパティへのアクセス、プロパティの変更の任意の組み合わせを検定します。

既定では、この制約により、すべての相互作用が少なくとも 1 回、任意の順序で発生したことが検定されます。RespectingOrder の名前と値のペアを使用すると、相互作用が指定した順序で発生したことを検定できます。

構築

constraint = matlab.mock.constraints.Occurred は、指定した相互作用がすべて発生したかどうかを判別するための制約を提供します。

constraint = matlab.mock.constraints.Occurred('RespectingOrder',tf) によって提供される制約では、指定した相互作用の発生順序が考慮されます。

入力引数

すべて展開する

相互作用の順序を考慮に入れるかどうかを表します。false または true として指定します。既定では、この制約では、相互作用が指定した順序で発生している必要はありません。

データ型: logical

プロパティ

すべて展開する

この プロパティ は読み取り専用です。

制約が相互作用の順序を考慮するかどうかを表します。false または true として格納されます。既定では RespectOrder プロパティは false ですが、'RespectingOrder' の名前と値のペアを使用して、制約の作成時に true に設定することもできます。

データ型: logical

コピーのセマンティクス

値。値クラスがコピー操作に与える影響については、オブジェクトのコピーを参照してください。

すべて折りたたむ

個人クラスのモックを作成します。

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";

"hello" を入力として speak メソッドが呼び出されたことを検証します。

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 で導入