2

シングルトンのOCMockで混乱し、2つの方法を取得しますが、私の意見ではどれも完璧ではありません。

  1. partialMockForObjectを使用します。部分的なMockForObjectを使用してシングルトンクラスのモックを実行したいと思います。次のコードを参照してください。正常に動作しますが、シングルトン[NSNotificationCenter defaultCenter]が以前のモック動作を記憶し、別の場所で呼び出されると、予期せずクラッシュするという欠点があります。だから私の質問は、「removeAllExpectations」のようなメソッドを作成して、記憶されているものをすべて削除するにはどうすればよいかということです。

    id aMock = [OCMockObject partialMockForObject:[NSNotificationCenter defaultCenter]];

    [aMockexpect] removeObserver:[OCMConstraint isKindOfClass:[WhereIsMyPhoneViewControllerクラス]]];

    [[aMock検証];

  2. カテゴリ方式を使用します。http://twobitlabs.com/2011/02/mocking-singletons-with-ocmock/を参照して、シングルトンモックを実行する別のメソッドについて言及しています。個人的にはpartialMockForObjectを好みます。単体テスト時に、すべてのメソッドをモックする必要はありません。

私の質問をOCMock開発グループに送信しましたが、まだ応答がありません。賢い人の意見が必要です。事前のおかげで、どんなアイデアや議論も歓迎されます。

4

2 に答える 2

4

OCMockの最新のソースコード(2012-04-06以降)を使用している場合は、

[aMock stopMocking];

モックオブジェクトの状態をリセットします。

于 2012-10-15T05:04:52.530 に答える
1

あなたは呼び出すことができます:

[aMock stop];

モックオブジェクトの状態をリセットします。

于 2011-12-19T19:27:32.960 に答える