2014-01-07 5 views
5

私は以下のメソッドのテストを作成したいと思います。パスワードを忘れた場合はチェックしたいと思います。私はTDDの新機能です。あなたがこれが必要だと思っているのか、どのようにテストを実装できるのかを知りたいと思います。iOS [[UIApplication sharedApplication] openUrl:someUrl]を呼び出すメソッドをテストする方法

- (IBAction)forgotPasswordButtonClicked:(id)sender { 
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:kForgetPasswordURL]]; 

}

どうもありがとう

答えて

2

私は、静的メソッドで新しいクラスを削除し、私はSpectaフレームワークから部分モックを使用し、私の問題を解決するために: id mockApplication = [OCMockObject partialMockForObject:[UIApplication sharedApplication]];

私はこれがより良い解決策だと思います。 OCMock 3については

+1

OCMockでは、上記のようにこのモックを作成しようとすると 'EXC_BAD_ACCESS'が表示されます。私は静的ライブラリでこのテストを実行しようとしています。それが原因だと思いますか? – AnthonyM

+0

OCMock 3にアップデートして以来、AnthonyMと同じことを経験しています(2で動作しました)。 – Jesse

-1

あなたは方法次の試験にXCTestを作成することができます。

ただし、プロジェクトのテストターゲットを作成し、デフォルトで作成されていない場合はXCTestCaseをテストターゲットに作成し、testForgotPassWordButtonClickedという名前で始まるメソッドを作成する必要があります。

テストターゲットを実行するには、テストターゲットのスキーマを作成し、テストを実行します。

+0

私は既にこのプロジェクトでTDDをやっています。私はSpectaフレームワークを使用しています。しかし、私はこのテストを具体的に行う方法はまだ分かりません。ありがとう –

+0

申し訳ありませんが、私はSpectaフレームワークを使用していません。 – ldindu

+0

この回答は高すぎるため、質問の内容とは関係ありません。 –

0

私は[[UIApplication sharedApplication] openURL:]を処理する新しいクラスを作成することでこれを行うことができました。この新しいクラスに対して静的メソッドを追加することでこれを行いました。私はこれが良いアプローチかどうかまだ分かりませんが、私の問題を解決しました。

6

には、次のことを試してください(私は前に部分的モックを知りませんでした):

id mockApplication = OCMClassMock([UIApplication class]); 
OCMStub([mockApplication sharedApplication]).andReturn(mockApplication); 

OCMVerify([mockApplication openURL:[OCMArg any]]); 

This記事が私を助けました。

関連する問題