問題タブ [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.
objective-c - ocmockを使用してAppDelegateのプロパティをスタブアウトする方法は?
私のアプリデリゲートクラスには、単純なプロパティがあります
次に、ここですべてのログインビューの機能のようなアプリデリゲートをオフロードして、メインのアプリデリゲートクラスを小さく保つことができるようにします(ish)
次に、ログインアプリデリゲートで、メインナビゲーションコントローラーのビューコントローラーをプッシュするメソッドがあります
苦痛な部分は、この「起動」メソッドを呼び出すViewControllerの内部にいるときです。
これをモックアウトしようとすると、アプリデリゲートのスタブが正しくないように見えます
ocunitを介してこれを実行すると、通常の「予期されたメソッドが呼び出されませんでした」というエラーが発生します。
だから私の質問は私がこれをスタブする方法に関連しています-私が持っているようにログインモックを返すスタブを行うことができますか、それとも手動でゲッターに到達する必要がありますか?
objective-c - タイプ NSString のプロパティが [NSNull null] になる場合
基本的な文字列トークンまたはエラー メッセージを返すために、いくつかの json を解析しています。
これを証明するテスト
これを実際のエンドポイントに配線するまではすべて順調でした-以下のようにコールバックを変更しない限り、それを見つけるためだけに-両方のコールバックを呼び出していました(私が望んでいたものではありません)
だから2部構成の質問
これを証明するテストを書けないのはなぜですか? エラーまたはトークンを NULL または NSNull に設定すると、いつでも正常に動作します (ただし、このコードは本番環境で動作するために必要でした)
を入れた場合、プロダクションコードが条件付きで失敗するのはなぜですか(ただし、シミュレーターで実行しているときに値をNSLogするとき
!= [NSNull null]
以外は何も取得できないようです?<null>
SomeResult オブジェクトでは、トークン/エラー プロパティが次のように表示されることに注意してください。
objective-c - ローカルでインスタンス化されスコープが設定された変数のOCUnitまたはOCmockテスト方法。
私はOCUnitとOCMockを初めて使用し、このテスト方法について詳しく知りたいと思います。
スタブを作成するOCUnitとOCMockの機能がモックオブジェクトなどを生成することを知っています...
まだクラックできていない特定のユースケースがあります。
これがユニットテストに関する私の問題です:
1)NSClassFromString(@ "GKLocalPlayer")は、foundation.hの呼び出しであり、私が知っているこれをスタブする機能はありません。
2)[[UIDevice currentDevice] systemVersion]は、関数のスコープに対してローカルな呼び出しです。私のメソッドは別のクラス(UIDevice)内のメソッドを呼び出します。関数呼び出しをスタブでオーバーライドして、この関数のすべてのパスを実行するための定型の回答を返します。
テスト対象の関数のスコープ内でクラスがインスタンス化されている場合、クラスをモックできるかどうかはわかりません。
さらに、#1のようなクラスメソッドをどのようにテストしますか。
ここでの唯一の答えはリファクタリングですか?
ios - iOSユニットテストプライベートモックオブジェクト?
私のXCodeプロジェクトには次のものがあります:
- コントローラ
- (シングルトン) databaseController
databaseController はコントローラー クラス内でインスタンス化されます。
この databaseController をモック オブジェクトに置き換えて、実際の databaseController に依存せずにコントローラー クラスが適切に機能することを確認するにはどうすればよいですか?
注:
- OCUnit は単体テストに使用されます。
- OCMock は、モック オブジェクトの作成に使用されます。
おまけの質問: databaseController がシングルトンではなかったら?
ocmock - OCMock は 1 回しか有効ではないのですが、なぜですか? または、私の側で何が問題なのですか?
TnSettings のモックを作成したいです。はい、次の方法でコードを作成すると機能します。問題は、ケースごとにモック コードを作成する必要があることです。例外を報告します。最新の OCMock V2.01 を使用しています。
私の質問は、なぜOCMockにそのような制限があるのですか? それとも、正しく使用しないのは私のせいですか?
事前に感謝します。
objective-c - OCMock-メソッドがモックオブジェクトで呼び出されていることを表明するために必要な「検証」の呼び出しですか?
OCMockObjectの「verify」メソッドが何をするのか混乱していますが、モックオブジェクトでメソッドが呼び出されたかどうかをテストするためにこれを呼び出す必要がありますか?テストの実行後に実際に「verify」を呼び出さなくても、モックオブジェクトで呼び出されるメソッドの期待値を完全に設定しないと、テストが失敗します。
例えば:
試験方法で
objective-c - OCMock: パラメータをチェックするための設定構文
検証する OCMock をセットアップしようとしています。
TaskManagerDelegate
次のメソッドを含むプロトコル があります。
このようにモックオブジェクトを設定した後、
このようにオブジェクトをテスト対象のクラスに割り当てます。
taskManager でメソッドを呼び出してから、addTasks メソッドが TaskManagerDelegate で呼び出されたこと、および渡された配列にオブジェクトが 1 つだけ含まれていることを確認したいと考えています。
これまでのところ、パラメーターが渡されているかどうかを検出するために OCMArg クラスを使用してきましたが、特定の型が送信されてモックに送信されたこと、またはモックに送信されたオブジェクトが特定のテストに合格したことを確認する方法を理解するのに苦労しています (例では正確に 1 の .count)。私は C# のバックグラウンドを持っており、通常は Moq を使用します。Moq では、ラムダ関数を使用して、モック オブジェクトに送信されるパラメーターに対して特定のチェックを行うことができます。
OCMockでこれを行う方法を知っている人はいますか、または何らかの概念的な理由でそれができない場合は?
ありがとう、
objective-c - OCMock が呼び出されたセレクターを認識しない
OCMock を使用するテストケースに苦労しています。これまでのところ、いくつかのプロジェクトで OCMock を使用しましたが、常に思ったとおりに動作します。[self setNeedsDisplay]
というプロパティを設定したときに呼び出されるテストを行う次のメソッドがありますimage
。
プロパティのセッターはimage
次のようになります。
[self setNeedsDisplay]
がセッターで呼び出されていることがわかります。しかし、テストを実行すると、次のエラーが発生します。
OCPartialMockObject[SMColorButton]: expected method was not invoked: setNeedsDisplay
メソッドが呼び出されていないように見えます。しかし、setter メソッドにブレークポイントを設定すると、停止し、その行がアプリケーションによって実行されたことが示されます。
あなたは私を助けることができます?何が間違っているのかわかりません...