問題タブ [ocmock]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
417 参照

iphone - OCMock がセレクターと一致しないのはなぜですか?

私は次のようなOCMockの期待を持っています:

実装でを呼び出してもvalidateField:target:selector:、モックの検証に失敗します。NULLただし、実装と期待値の両方でセレクターを置き換えると、検証に合格します。明らかに、NULL私が使いたいものではありません。問題がセレクターのどこかにあることは明らかです。これが機能しない理由、または修正方法はありますか?

0 投票する
1 に答える
2398 参照

objective-c - Obj-C:NSInvocationからブロック引数を取得して呼び出す方法-iOSでTwitterアカウントをスタブする

KIFとOCMockを使用してiOSアプリケーションをテストし、デバイスをスタブしACAccountStoreてTwitterアカウントの独自の表現を返します。requestAccessToAccountsWithTypeスタブして、渡された完了ハンドラーを自分の値で呼び出したいのですが、呼び出しからブロックを取得して適切に呼び出すことができないようです( EXC_BAD_ACCESS)。Objective-CとiOSに慣れていないので、ブロックをから引き出しているときに何か間違ったことをしていると確信していNSInvocationます。

これは製品コードです。_accountStoreはテストセットアップから挿入されます。

セットアップコードをテストします。

0 投票する
2 に答える
7504 参照

objective-c - クラスメソッド(+)をモックする方法は?

次のコードの単体テストを記述する必要があります。クラス メソッド canMakePayments のモックを作成したいです。yes または no を返します。これまでのところ、canMakePayments がクラス メソッド (+) であるため、適切なメソッドが見つかりません。すべての OCMock メソッドがすべて使用されているようです。インスタンスメソッド (-)。

皆さん、どんな提案や議論もいただければ幸いです。ありがとう。

0 投票する
1 に答える
2533 参照

unit-testing - IPhoneユニットテストOCMock、読み取り専用変数をモックする方法は?

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

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

0 投票する
1 に答える
479 参照

objective-c - OCUnit アプリケーションのテスト: UIPageControl numberOfPages == NSArray カウントをテストしようとしています

私はOCUnitとOCMockに比較的慣れていないので、ご容赦ください。ページ数が NSArray (Core Data から入力される) のカウントから計算される UIPageControl を含むビュー コントローラーがあります。これは、次のように ViewDidLoad メソッドで行われます。

ログには、viewedPages と numberOfPages の両方に一致する整数値が表示されます。ありがたいことに、以下のテストを実行すると、アサーションは true です。

ただし、前述のように、このプロセスは Core Data のオブジェクトを含む配列の使用に依存しているため、OCMock を使用してこれを事前定義済みの配列に置き換え、Core Data 要素を効果的に削除することにしました。そうすることで、私は今、理解できない結果を得ています。

私の新しいテストは次のようになります。

私を混乱させているのは、このシナリオで NSLog が、viewedPages カウントが私が作成したモック配列のカウントと一致することを示していることです (すばらしい!) が、numberOfPages は常にゼロですか? その結果、テストは失敗します。

また、コントローラーにviewPages配列をロードする関数を、事前定義された配列を返すテストコントローラーのローカル関数、つまり、

ただし、これは上記とまったく同じ結果になりました。numberOfPages が 0 を返すため、テストは失敗しますが、viewedPages 配列は予想されるカウントを示します。

私が言ったように、私は OCUnit と OCMock を初めて使用するので、この質問ができるだけ詳細で意味のあるものであることを願っています。これが OCMock の仕組みについての私の誤解によるものであり、誰かが私を修正してくれることを願っています - 私は永遠に感謝します! 残念ながら、iPhone 開発用の OCUnit と OCMock について、初心者向けの適切なドキュメントが不足しているようです。

前もって感謝します

0 投票する
2 に答える
4096 参照

singleton - partialMockForObjectを使用してシングルトンクラスのモックを実行します。「removeAllExpectations」のようなメソッドを作成して、記憶されているものをすべて削除するにはどうすればよいですか。

シングルトンの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開発グループに送信しましたが、まだ応答がありません。賢い人の意見が必要です。事前のおかげで、どんなアイデアや議論も歓迎されます。

0 投票する
1 に答える
782 参照

iphone - iPhoneでこのhitTestオーバーライドを単体テストするにはどうすればよいですか?

hitTestこのオーバーライドを単体テストするにはどうすればよいですか?

私が直面している問題UIEventは、 public コンストラクターがないため、UIEventで異なる結果を生成する を作成できないこと[super hitTest:point withEvent:event]です。

別の方法として、 mock を作成することもできますUIEventが、それはそれが何をするのかを知っていることを意味します[super hitTest:point withEvent:event]が、私は知りません。

別のオプションは[super hitTest:point withEvent:event]( OCMockを使用して) スウィズルすることですが、スーパークラスの実装だけをスウィズルできるかどうかはわかりません。

0 投票する
1 に答える
1269 参照

ocmock - 部分的なモックからメソッドを「期待」することは可能ですか?

最善の方法ではありませんが、オブジェクトのプライベートメソッドが呼び出されていることを確認したいので、部分的なモックを作成し、プライベートメソッドに期待値を追加します。

テストを実行すると、cleanupPreviousContentsは呼び出されませんが、テストは引き続き成功します。バグはどこにありますか?

よろしく、クエンティン

0 投票する
1 に答える
1223 参照

objective-c - モックされたオブジェクトで失敗している NSPredicate をデバッグする方法は?

フェッチ要求の 1 つで NSPredicate を使用するコア データ アプリケーションがあります。その述語は次のように定義されます。

この述語をフェッチ リクエストに適用して実行すると、期待どおりに動作します。少なくとも、現時点でデータ ストアにある限られた量のデータで動作します。

現在、このコードの一連の単体テストを作成しようとしています。これを行うために、OCMock を使用して NSManagedObjectContext を作成し、executeFetchRequest を独自のテスト実装でスタブ化しています。

基本的に、コア データ フェッチ リクエストに対して実行するように定義された NSPredicate を取得し、モック オブジェクトの配列に対して実行しようとしています。モック化されたオブジェクトはすべて homeTeam および awayTeams メソッドを実装しているため、述語に関する限り、これは機能するはずです。残念ながら、dta 配列に対してfilteredArrayUsingPredicate を実行すると、空の配列が返されます。私はこれを理解しようとして本当に立ち往生しており、これを効果的にデバッグする方法がわかりません。

ここで 2 つの質問があります。

  1. 述語で参照されるプロパティを実装するモック オブジェクト (NSProxy サブクラスのインスタンス) の配列に対してfilteredArrayUsingPredicate を使用する理由がここにない理由はありますか?
  2. 明らかな理由がないと仮定すると、これをデバッグしてfilteredArrayUsingPredicateがここで評価しているものと、なぜ失敗するのかを確認する効果的な方法を誰かが提案できますか?

あなたが提供できる助けをありがとう

0 投票する
3 に答える
2014 参照

objective-c - ARC の下で OCMock を取得して、弱いプロパティを使用して NSProxy サブクラス セットを nilling しないようにするにはどうすればよいですか?

の下に、プロパティを持つARCオブジェクトがあります。のいくつかのテストを作成しようとしており、 を使用してそのプロパティをモックしています。ChildweakparentChildparentOCMock

ARCではNSProxy、合成された弱いプロパティセッターを使用してサブクラスを設定してもプロパティは設定されません...弱いプロパティが設定された後の行で、それをチェックすると、それがすでにnil. 具体例は次のとおりです。

がを参照するためにassignプロパティの代わりにプロパティを使用してこれを回避できることはわかっていますが、それを使い終わったら (ある種の穴居人のように)をアウトする必要があります。 ARCが回避するはずだったもの。weakChildParentnilparent

アプリのコードを変更せずにこのテストに合格する方法について何か提案はありますか?

編集: であることと関係OCMockObjectがあるようです。 のインスタンスにNSProxyすると、弱参照は nil 以外の値を「保持」します。アプリのコードを変更せずにこのテストに合格する方法をまだ探しています。aParentNSObjectchild.parent

編集 2 :ブレイクの答えを受け入れた後、条件付きでプロパティを弱いから変更するプリプロセッサ マクロのプロジェクトで実装を行いました -> 割り当て。あなたのマイレージは異なる場合があります: