3

私たちは常に次の方法で OCMock を使用しますが、NavigationController などの一部の読み取り専用プロパティ変数では機能しないようです。読み取り専用であり、set mock one は有効になりません。

この難しい問題を経験したことがありますか? どうすれば解決できますか? どんなアイデアでも大歓迎です。賢い人たちに前もって感謝します。

id mockWebView = [OCMockObject mockForClass:[UIWebView class]];
[[mockWebView expect] loadHTMLString:...];
object_setInstanceVariable(viewController, "webView", mockWebView);
4

1 に答える 1

4

部分モックを使用します。

id mockController = [OCMockObject partialMockForObject:viewController];
[[[mockController] stub] andReturn:mockWebView] webView];

[controller doSomethingWithWebView];

これは、viewController が ivar に直接アクセスする場合は機能しませんが、アクセサーを介して ivar にアクセスする場合self.webviewは機能します。これは通常、プロパティにアクセスする方法です。

于 2011-12-09T19:13:47.793 に答える