Main Content

createMock

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

モック オブジェクトの作成

構文

[mock,behavior] = createMock(testcase)
[mock,behavior] = createMock(testcase,superclass)
[mock,behavior] = createMock(___,Name,Value)

説明

[mock,behavior] = createMock(testcase) はモック オブジェクトと、関連付けられた behavior オブジェクトを作成します。

[mock,behavior] = createMock(testcase,superclass) は、superclass クラスから派生するモックを作成します。

[mock,behavior] = createMock(___,Name,Value) は、1 つ以上の Name,Value のペア引数で指定された追加オプションをもつモックを作成します。この構文では、前述の構文の引数のいずれかを使用できます。

入力引数

すべて展開する

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

モックのスーパークラス。スカラー matlab.metadata.Class オブジェクトとして指定します。モック オブジェクトはこのクラスのすべての抽象プロパティおよびメソッドを実装します。

例: ?MyIterfaceClass

例: ?MException

名前と値の引数

引数のオプションのペアを Name1=Value1,...,NameN=ValueN として指定します。ここで Name は引数名で、Value は対応する値です。名前と値の引数は他の引数の後になければなりませんが、ペアの順序は重要ではありません。

R2021a より前では、コンマを使用してそれぞれの名前と値を区切り、Name を引用符で囲みます。

たとえば、[mock,behavior] = testCase.createMock('AddedProperties',{'Prop1','Prop2'}) はモックを作成し、Prop1 および Prop2 プロパティをこのモックに追加します。

モックに追加するメソッドの名前。string 配列または文字ベクトルの cell 配列として指定します。モックが厳密であるか、モックの動作が定義されている場合を除き、これらのメソッドをモックで呼び出すと空の配列が返されます。

例: ["methodA","methodB","methodC"]

例: {'method1','method2'}

モックに追加するプロパティの名前。string 配列または文字ベクトルの cell 配列として指定します。モックが厳密でない場合、その値の設定と取得ができます。一方、モックが厳密である場合、プロパティ値の設定または取得を行うと、既定では MATLAB® はアサーション エラーを生成します。

例: "MyProperty"

例: {'Prop1','Prop2'}

モックに追加するイベントの名前。string 配列または文字ベクトルの cell 配列として指定します。モックにイベントを追加するには、モック オブジェクトはハンドル クラスから派生したものでなければなりません。

例: "MyEvent"

例: {'Event1','Event2'}

既定のプロパティ値。スカラー struct として指定します。この名前と値のペアの引数を使用して、モック オブジェクト クラスによって実装されるプロパティの既定値を指定します。これらのプロパティには、Abstract スーパークラスのプロパティ、および名前と値のペアの引数 'AddedProperties' で追加されたプロパティが含まれます。各フィールドはモック クラスに実装されたプロパティの名前を参照し、対応する値はそのプロパティの既定値を表します。

例: struct('PropA',123,'PropB',true)

モックするメソッド。文字ベクトルの string 配列または cell 配列内のメソッド名を使用して指定されます。モックされているメソッドがないことを指定するには、string.empty、または {} として指定された空の値を使用します。既定では、すべてのメソッドがモックされます。

MockedMethods には、追加されたメソッド、抽象スーパークラス メソッド、オーバーライド可能な具象スーパークラス メソッド (false の値の Sealed 属性) の任意のサブセットを含めることができます。一般には、スタブまたはスパイするメソッドのみを含めます。

MockedMethods を指定すると、テスト ケースにとって重要なメソッドのみをモックするテストが可能となります。スーパークラスが多くのメソッドを定義する場合に、モックされるメソッドを限定することで、テストのパフォーマンスを向上させることができます。

例: ["foo" "bar"]

データ型: char | string | cell

モックが厳密であるかどうかを示すインジケーター。false または true として指定します。既定では、動作が定義されていない場合、モック メソッドは空の配列を返します。Stricttrue に設定すると、フレームワークは以下のものに対して未定義動作によるアサーション エラーを生成します。

  • 指定したインターフェイスのすべての abstract メソッドおよびプロパティ。

  • AddedMethods 引数を使用してモックに追加されたメソッド。

  • AddedProperties 引数を使用してモックに追加されたプロパティ。

データ型: logical

superclass コンストラクターに渡す入力。値の cell 配列として指定します。

例: モックを作成して、そのモックで superclass?MException と定義する場合、'ConstructorInputs'{'My:ID','My message'} などのようになります。

出力引数

すべて展開する

superclass 入力で指定したインターフェイスの抽象メソッドおよびプロパティの実装。モック オブジェクトとして返されます。モック作成時にスーパークラスが定義されていない場合、明示的なインターフェイスはありません。

メモ: モック オブジェクトの保存と読み込みはできません。

モックの動作の定義。behavior オブジェクトとして返されます。behavior を使用して、モックのアクションを定義して相互作用を検定します。

メモ: behavior オブジェクトの保存と読み込みはできません。

すべて展開する

対話型テスト用にテスト ケースを作成します。

testCase = matlab.mock.TestCase.forInteractiveUse;

厳密なモックを作成します。

[mock,behavior] = testCase.createMock('AddedMethods',"foo",'Strict',true);

特定のメソッドを使用してモックを作成します。

[mock,behavior] = testCase.createMock('AddedMethods',...
    {'one','two','three'});

特定のイベントを使用してモックを作成します。

[mock,behavior] = testCase.createMock(?handle,'AddedEvents',...
    {'EventA','EventB'});

コンストラクター入力を使用してモックを作成します。

[mock,behavior] = testCase.createMock(?MException,'ConstructorInputs',...
    {'My:ID','My message'});

2 つのプロパティを使用してモックを作成します。Prop2 は既定値 false をもちます。

mock = testCase.createMock('AddedProperties',{'Prop1','Prop2'},...
    'DefaultPropertyValues',struct('Prop2',false))
mock = 

  Mock with properties:

    Prop1: []
    Prop2: 0

クラス doubleisnan メソッドおよび isinf メソッドをオーバーライドするモックを作成します。

[mock,behavior] = testCase.createMock(?double,"MockedMethods",["isnan","isinf"],...
    "ConstructorInputs",{123});

バージョン履歴

R2017a で導入

すべて展開する