Skip to content
This repository has been archived by the owner on Nov 11, 2021. It is now read-only.

v2 Sliver

yaakaito edited this page Aug 2, 2012 · 4 revisions

v2 Sliver

開発コードネームはSliverです。

追加したい機能

centralServer

いままでは

- (void)setUpClass {
    [NLTHTTPStubServer globalSettings].port = 12345;
    server = [[NLTHTTPStubServer stubServer] retain];
    [server startServer];
}

こう書く必要があったものを廃止する。 centralServerはNLTHTTPStubServerのクラスメソッドで起動済み、もしくはフックして起動するサーバーへの参照を提供する。 これによりstartServerstopServerを扱う必要がなくなり、以下のようなコードになる。

[[[[NLTHTTPStubServer centralServer] stub] forPath:@"/api.json"] andJSONResponse:json];

expect, stub

いままではstubのみだったものにexpectの概念を取り入れる。これについてはOCMockとほぼ似た形を取る。 expectはフェイクレスポンスを登録し、それに対してアクセスがあると一回で消費される。今のstubと同等の機能。 stubは登録したフェイクレスポンスが消化されず、isStubsEmptyの対象にもならない。 またisStubEmptyについてはverifyなどに名前を変更する。(しばらくはエイリアスを残す。) stubが非消化型になるため、URL queryなどの条件も盛り込めるようになる必要がある。

globalStub/globalExpect

setupなどで事前に登録することで、登録が解除されるまでの間、すべてのstubexpectはこれを継承する。 これ自体がフェイクのレスポンスとして振る舞う訳ではない。

例えば以下のようにglobalExpectを利用した場合

[[[NLTHTTPStubServer centralServer] globalExpect] forPath:@"/api.json"];
[[[NLTHTTPStubServer centralServer] expect] andJSONResponse:jsonA];
[[[NLTHTTPStubServer centralServer] expect] andJSONResponse:jsonB];

以下と同等と解釈される

[[[[NLTHTTPStubServer centralServer] expect] forPath:@"/api.json"] andJSONResponse:jsonA];
[[[[NLTHTTPStubServer centralServer] expect] forPath:@"/api.json"] andJSONResponse:jsonB];

verbose

フルのURLやヘッダー情報を文字列として取得する機能。

[[[[[NLTHTTPStubServer centralServer] expect] forPath:@"/api.json"] andJSONResponse:json] withVerbose];
// 実際にリクエストがきたときになんらかの表示がされる

blocksでフォーマットを変えるようなAPIも提供予定。

assignServerLogic

思いついたけど重いのでやらない予定。

バイナリサポート

画像などのcontent-typeをデフォルトで用意

互換性について

基本的に保つが、実際に利用系のみのテストのみを残す形になりそう。