問題タブ [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.
iphone - OCMock がセレクターと一致しないのはなぜですか?
私は次のようなOCMockの期待を持っています:
実装でを呼び出してもvalidateField:target:selector:
、モックの検証に失敗します。NULL
ただし、実装と期待値の両方でセレクターを置き換えると、検証に合格します。明らかに、NULL
私が使いたいものではありません。問題がセレクターのどこかにあることは明らかです。これが機能しない理由、または修正方法はありますか?
objective-c - Obj-C:NSInvocationからブロック引数を取得して呼び出す方法-iOSでTwitterアカウントをスタブする
KIFとOCMockを使用してiOSアプリケーションをテストし、デバイスをスタブしACAccountStore
てTwitterアカウントの独自の表現を返します。requestAccessToAccountsWithType
スタブして、渡された完了ハンドラーを自分の値で呼び出したいのですが、呼び出しからブロックを取得して適切に呼び出すことができないようです( EXC_BAD_ACCESS
)。Objective-CとiOSに慣れていないので、ブロックをから引き出しているときに何か間違ったことをしていると確信していNSInvocation
ます。
これは製品コードです。_accountStoreはテストセットアップから挿入されます。
セットアップコードをテストします。
objective-c - クラスメソッド(+)をモックする方法は?
次のコードの単体テストを記述する必要があります。クラス メソッド canMakePayments のモックを作成したいです。yes または no を返します。これまでのところ、canMakePayments がクラス メソッド (+) であるため、適切なメソッドが見つかりません。すべての OCMock メソッドがすべて使用されているようです。インスタンスメソッド (-)。
皆さん、どんな提案や議論もいただければ幸いです。ありがとう。
unit-testing - IPhoneユニットテストOCMock、読み取り専用変数をモックする方法は?
私たちは常に次の方法で OCMock を使用しますが、NavigationController などの一部の読み取り専用プロパティ変数では機能しないようです。読み取り専用であり、set mock one は有効になりません。
この難しい問題を経験したことがありますか? どうすれば解決できますか? どんなアイデアでも大歓迎です。賢い人たちに前もって感謝します。
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 について、初心者向けの適切なドキュメントが不足しているようです。
前もって感謝します
singleton - partialMockForObjectを使用してシングルトンクラスのモックを実行します。「removeAllExpectations」のようなメソッドを作成して、記憶されているものをすべて削除するにはどうすればよいですか。
シングルトンのOCMockで混乱し、2つの方法を取得しますが、私の意見ではどれも完璧ではありません。
partialMockForObjectを使用します。部分的なMockForObjectを使用してシングルトンクラスのモックを実行したいと思います。次のコードを参照してください。正常に動作しますが、シングルトン[NSNotificationCenter defaultCenter]が以前のモック動作を記憶し、別の場所で呼び出されると、予期せずクラッシュするという欠点があります。だから私の質問は、「removeAllExpectations」のようなメソッドを作成して、記憶されているものをすべて削除するにはどうすればよいかということです。
id aMock = [OCMockObject partialMockForObject:[NSNotificationCenter defaultCenter]];
[aMockexpect] removeObserver:[OCMConstraint isKindOfClass:[WhereIsMyPhoneViewControllerクラス]]];
[[aMock検証];
カテゴリ方式を使用します。http://twobitlabs.com/2011/02/mocking-singletons-with-ocmock/を参照して、シングルトンモックを実行する別のメソッドについて言及しています。個人的にはpartialMockForObjectを好みます。単体テスト時に、すべてのメソッドをモックする必要はありません。
私の質問をOCMock開発グループに送信しましたが、まだ応答がありません。賢い人の意見が必要です。事前のおかげで、どんなアイデアや議論も歓迎されます。
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を使用して) スウィズルすることですが、スーパークラスの実装だけをスウィズルできるかどうかはわかりません。
ocmock - 部分的なモックからメソッドを「期待」することは可能ですか?
最善の方法ではありませんが、オブジェクトのプライベートメソッドが呼び出されていることを確認したいので、部分的なモックを作成し、プライベートメソッドに期待値を追加します。
テストを実行すると、cleanupPreviousContentsは呼び出されませんが、テストは引き続き成功します。バグはどこにありますか?
よろしく、クエンティン
objective-c - モックされたオブジェクトで失敗している NSPredicate をデバッグする方法は?
フェッチ要求の 1 つで NSPredicate を使用するコア データ アプリケーションがあります。その述語は次のように定義されます。
この述語をフェッチ リクエストに適用して実行すると、期待どおりに動作します。少なくとも、現時点でデータ ストアにある限られた量のデータで動作します。
現在、このコードの一連の単体テストを作成しようとしています。これを行うために、OCMock を使用して NSManagedObjectContext を作成し、executeFetchRequest を独自のテスト実装でスタブ化しています。
基本的に、コア データ フェッチ リクエストに対して実行するように定義された NSPredicate を取得し、モック オブジェクトの配列に対して実行しようとしています。モック化されたオブジェクトはすべて homeTeam および awayTeams メソッドを実装しているため、述語に関する限り、これは機能するはずです。残念ながら、dta 配列に対してfilteredArrayUsingPredicate を実行すると、空の配列が返されます。私はこれを理解しようとして本当に立ち往生しており、これを効果的にデバッグする方法がわかりません。
ここで 2 つの質問があります。
- 述語で参照されるプロパティを実装するモック オブジェクト (NSProxy サブクラスのインスタンス) の配列に対してfilteredArrayUsingPredicate を使用する理由がここにない理由はありますか?
- 明らかな理由がないと仮定すると、これをデバッグしてfilteredArrayUsingPredicateがここで評価しているものと、なぜ失敗するのかを確認する効果的な方法を誰かが提案できますか?
あなたが提供できる助けをありがとう
objective-c - ARC の下で OCMock を取得して、弱いプロパティを使用して NSProxy サブクラス セットを nilling しないようにするにはどうすればよいですか?
の下に、プロパティを持つARC
オブジェクトがあります。のいくつかのテストを作成しようとしており、 を使用してそのプロパティをモックしています。Child
weak
parent
Child
parent
OCMock
ARCではNSProxy
、合成された弱いプロパティセッターを使用してサブクラスを設定してもプロパティは設定されません...弱いプロパティが設定された後の行で、それをチェックすると、それがすでにnil
. 具体例は次のとおりです。
がを参照するためにassign
プロパティの代わりにプロパティを使用してこれを回避できることはわかっていますが、それを使い終わったら (ある種の穴居人のように)をアウトする必要があります。 ARCが回避するはずだったもの。weak
Child
Parent
nil
parent
アプリのコードを変更せずにこのテストに合格する方法について何か提案はありますか?
編集: であることと関係OCMockObject
があるようです。 のインスタンスにNSProxy
すると、弱参照は nil 以外の値を「保持」します。アプリのコードを変更せずにこのテストに合格する方法をまだ探しています。aParent
NSObject
child.parent
編集 2 :ブレイクの答えを受け入れた後、条件付きでプロパティを弱いから変更するプリプロセッサ マクロのプロジェクトで実装を行いました -> 割り当て。あなたのマイレージは異なる場合があります: