1. ホーム
  2. ios

[解決済み] XCTestでNSURLをテストバンドル内のファイルパスに変換する

2023-08-10 02:05:46

質問

私はTDDと新しいXCTestフレームワークを使用してiOSアプリを書こうとしている。私のメソッドの1つは、インターネットからファイルを取得し(NSURLオブジェクトが与えられる)、ユーザーのドキュメントにそれを保存します。このメソッドの署名は次のようなものです。

- (void) fetchAndStoreImage:(NSURL *)imageUrl

私はこのメソッドのテストを、インターネットに接続されていない場合に失敗しないように書こうとしています。私のアプローチ(以前の 質問 から取られた)私のアプローチは、ローカルファイルシステム内の画像へのNSURLを使用してメソッドを呼び出すことです。

ユニットテストを有効にした新しいプロジェクトが作成されるとき、Testsディレクトリは'Supporting Files'という名前のサブディレクトリをもちます。これは、私のテスト画像が入るべき場所だと思います。私の質問は、テスト画像がアプリケーションにバンドルされることを望まないので、このディレクトリ内の画像を指す NSURL オブジェクトをどのように取得できるかということです。どんな助けでも感謝します。

どのように解決するのですか?

実は [NSBundle mainBundle] は、UnitTest を実行するときに ではなく はアプリのパスではなく、/Developer/usr/bin になっているので、これは動作しません。

ユニットテストでのリソースの取得方法はこちらです。 OCUnit & NSBundleです。

要するに、使う。

[[NSBundle bundleForClass:[self class]] resourcePath]

またはあなたの場合

[[NSBundle bundleForClass:[self class]] resourceURL]