Main Content

matlab.mock.InteractionHistory.forMock

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

モック オブジェクトから履歴を返す

説明

history = matlab.mock.InteractionHistory.forMock(mock) はモック オブジェクトから履歴を返します。historymatlab.mock.InteractionHistory オブジェクトの配列です。history の各要素は、個々のメソッドの呼び出し、プロパティへのアクセス、またはプロパティの変更に対応しています。配列要素は、最初の要素が最初に記録された相互作用を示す順序になっています。このメソッドは、すべてのユーザーが表示可能なメソッドとプロパティのみをもつ相互作用を返します。たとえば、次の相互作用は記録されません。

  • Hidden メソッドの呼び出し

  • Sealed スーパークラス メソッドの呼び出し

  • 具象スーパークラスのプロパティに対するアクセスまたは変更

入力引数

すべて展開する

相互作用履歴を返すモック。モック オブジェクトとして指定します。

すべて展開する

computeValue メソッドと 2 つのプロパティを使用してモックを作成します。既定値 falseProp2 に割り当てます。

tc = matlab.mock.TestCase.forInteractiveUse;
[mock,behavior] = tc.createMock( ...
    'AddedMethods',{'computeValue'}, ...
    'AddedProperties',{'Prop1','Prop2'}, ...
    'DefaultPropertyValues',struct('Prop2',false));

入力値に関係なく、値 42 を返すように computeValue メソッドの動作を設定します。

import matlab.mock.actions.AssignOutputs;
when(withAnyInputs(behavior.computeValue),AssignOutputs(42));

モックを操作します。まず、computeValue メソッドを呼び出します。次に、Prop2 の値を表示します。最後に、Prop1 の値を設定します。

n = mock.computeValue('hello');
mock.Prop2
mock.Prop1 = 13;
ans =

  logical

   0

モックの相互作用履歴を取得します。

h = matlab.mock.InteractionHistory.forMock(mock)
h = 

  1×3 heterogeneous InteractionHistory (SuccessfulMethodCall, SuccessfulPropertyAccess, SuccessfulPropertyModification) array with properties:

    Name

Interaction summary:
  computeValue([1×1 matlab.mock.classes.Mock], 'hello')
  <Mock>.Prop2
  <Mock>.Prop1 = 13

最初の InteractionHistory オブジェクトを調べます。メソッドは、モック オブジェクトと文字ベクトル 'hello' を入力として呼び出されました。メソッドは値 42 を出力しました。

h(1)
ans = 

  SuccessfulMethodCall with properties:

       Name: "computeValue"
     Inputs: {[1×1 matlab.mock.classes.Mock]  'hello'}
    Outputs: {[42]}

Interaction summary:
  computeValue([1×1 matlab.mock.classes.Mock], 'hello')

代替方法

getMockHistory メソッドを matlab.mock.TestCase インスタンスに使用して、同じ相互作用履歴を取得することができます。たとえば、matlab.mock.TestCase のインスタンス tc、およびモック オブジェクト mock がある場合、次のメソッドの呼び出しは等価です。

h = matlab.mock.InteractionHistory.forMock(mock);
h = tc.getMockHistory(mock);

ただし、forMock メソッドを使用するために matlab.mock.TestCase のインスタンスにアクセスする必要はありません。

バージョン履歴

R2018a で導入