hirakiucの日記

いろいろ

今日の発見

Expecta

AFNetworkingのtestcaseをチラ見してて気がついたもの。

SenTestCaseで使ってるmatcherがさくっと書けてしまう優れもの。

petejkim/expecta - github.com

expect(@"foo").to.equal(@"foo"); // `to` is a syntatic sugar and can be safely omitted.
expect(foo).notTo.equal(1);
expect([bar isBar]).to.equal(YES);
expect(baz).to.equal(3.14159);

非同期テストもシンプルに書けるぽい。

expect(対象).will.to.equal(期待するもの);

とか。

実際の例はAFNetworkingのtestcaseから。

# https://github.com/AFNetworking/AFNetworking/blob/master/Tests/AFHTTPClientTests.m
- (void)testPostWithParameters {
    __block id blockResponseObject = nil;
    [self.client postPath:@"/post" parameters:@{ @"key": @"value" } success:^(AFHTTPRequestOperation *operation, id responseObject) {
        blockResponseObject = responseObject;
    } failure:nil];
    
    expect([self.client.operationQueue operationCount]).will.equal(0);
    expect(blockResponseObject).notTo.beNil();
    expect(blockResponseObject).to.beKindOf([NSData class]);
    
    NSError *error = nil;
    NSDictionary *responseDictionary = [NSJSONSerialization JSONObjectWithData:blockResponseObject options:0 error:&error];
    expect(responseDictionary[@"form"]).to.equal(@{ @"key": @"value" });
}

httpbin

通信ライブラリとかのテストケースで使えそうなもの。

httpbin

いろいろとテストで使えそうな予感。

ローカルで動いてないと嫌な人はここからインストールするとかで使えそうな雰囲気。

kennethreitz/httpbin - github.com