問題タブ [ocmockito]
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.
ios - Cocoapods を使用した OCMockito のセットアップに関する質問
Xcode 5 で Cocoapods を使用して OCMockito (および OCHamcrest) をセットアップするのに問題があります。これは私の Podfile です。
iOS プロジェクトのセットアップ ( https://github.com/jonreid/OCMockito#adding-ocmockito-to-your-project )に従おうとすると、Xcode はこのインポートを見つけられません:
だから私はこれをやろうとしました:
動作していますが、それでよいかどうかはわかりません。
また、別の質問があります。私の知る限り、RestKit と OCMockito をメイン ターゲットとテスト ターゲットの両方にリンクしています。両方のターゲットで RestKit をリンクし、OCMockito をテスト ターゲットのみにリンクすることは可能ですか?
助けてくれてありがとう。
アップデート:
これは、Cocoapods による Pods.xcconfig Generetad です。
IOS ヘッダーが正しく設定されていないようですが、ポッドが間違っていますか?
アップデート:
これは Pods/Headers/OCMockito の内容です
unit-testing - KVO オブザーバーをモックすると OCMockito がクラッシュする
SUT に渡されるオブジェクトをモックしようとしています。渡されると、SUT はモックをいくつかのプロパティのオブザーバーとして登録します。SUT dealloc ではremoveObserver
、モックを呼び出します。これは OCMockito 0.23 では問題なく動作していましたが、1.0.0 に更新すると、このテストにより OCMockito が[HCIsEqual .cxx_destruct]
. 少しデバッグすると、次のMKTInvocationContainer
方法に進みます。
ここで、呼び出しはその引数を保持するように指示されます。リテインサイクルでしょうか?
さらに、私はいくつかの調査を行っておりNSProxy
、KVOとの間の非互換性を示すいくつかのSO回答を見つけました:
https://stackoverflow.com/a/17457155/2824409
しかし、なぜこれが OCMockito 0.23 で機能していたのに、現在は機能していないのか疑問に思います。何か案が?
私の場合の解決策は、モックを実際のオブジェクトに置き換えることです。これは問題なく動作しますが、ほとんど使用しないテスト スイート用にオブジェクト全体を構築するのは困難です。
いずれにせよ、KVO がモックでサポートされていない場合は、これを文書化し、適切に処理する必要があると思います。
[編集]
この問題の回避策を見つけました。
ここで説明されているように、カスタム ブロック ベースの KVO インフラストラクチャを使用しています: http://www.mikeash.com/pyblog/key-value-observing-done-right.html。現在、SUT は KVO のモックを登録しておりself
、ブロック内を渡しています。どこかに保持されていると思いますself
が、ブロック前に弱体化されているため、保持されるべきではありません...
Apple が提供するデフォルトの kvo フレームワークを使用すると、この問題が解決するようです。しかし、私はまだ根本的な問題について心配しています。OCMockito で何が変更され、これが失敗するようになりましたか?
何はともあれ、お手数をおかけいたしますが、よろしくお願いいたします。
ios - 単体テストで UIImage をアサートする最良の方法は何ですか?
tableView:cellForRowAtIndexPath:
ビュー コントローラーでデリゲート メソッドの単体テストを書いているとします。このメソッドは、渡すインデックス パスに応じて、いくつかの異なる構成のセルを返す可能性があります。
プロパティで簡単にアサートできcell.textLabel.text
ます。cell.imageView.image
しかし、プロパティに正しい画像が含まれていると断言するにはどうすればよいでしょうか? 画像にも imageView にも、画像名またはファイル名を見つけるために使用できる (パブリック API) プロパティはありません。
私が思いついた最善の方法は、可能な限り最小の有効な.png[UIImage imageWithData:]
を作成し(ユニットテストでディスクに触れないように使用します)、取得したバイト配列cell.imageView.image
が期待どおりであることをアサートすることです。これを少し改善するためにOCHamcrest マッチャーを作成しましたが、これは不十分で柔軟性のないアプローチです。
誰かがより良いアイデアを持っていますか?