3

iOS プロジェクトで単体テストに BDD アプローチを採用したいのですが、さまざまなテスト スパイのテスト ダブルを提供する既存のライブラリがない可能性があることに気付きました。理想的には、 MockitoJasmine、またはRRに似たものを探しています。

テスト スパイ ライブラリの作成に 1 週​​間自由時間を費やす前に、ここでまず SO に関する質問を投げかけようと思いました。

これまでOCMockKiwiを見てきましたが、どちらもact フェーズの前に、arrange フェーズで期待値アサーションを設定する必要がある、従来の高仕様のデフォルトのモッキング フレームワークのようです。明らかに、これは美しいDRYのネストされたスペック ( KiwiまたはCedarで作成する予定) の私のビジョンを妨げています。

4

1 に答える 1

2

これを見ただけです。

キウイは今は間違いなくこれをしていません。その中のモックは、行動段階の前に「標準的な」アレンジのために作られているのは正しいです。

先に進むと、一見しただけではありますが、スパイ機能の基本を追加するのにそれほど多くのリエンジニアリングは必要ないようです。モックに到達するすべてのメッセージ(いくつかの実装が重要な予約済みセレクターを除く)は、を通過し-[KWMock forwardInvocation:]ます。

基本的に、currentは、現在-[KWMock forwardInvocation:]実行しているものではなく、それを通過するすべての呼び出しを記録/コピーするように変更する必要があります。これは、記録された呼び出しを照会することによって、後で期待値を検証できるようにする基本的な機能になります。もちろん、検証のための読みやすいフォームを考え出すことも簡単ではありません。

スパイ/モックは、それが前もって立っているクラス/プロトコルを知る必要があります。これにより、送信されるメッセージのセレクターに対して有効なメソッドシグネチャを生成できるようになり、ランタイム転送機構が転送される実際のNSInvocationを生成できるようになります。

私は今、他のことに夢中になって実装を実装していますが、さらに多くの質問に答えたり、プルリクエストをマージしたりできます。HTH。

于 2011-03-08T06:23:00.193 に答える