NLTHTTPStubServer 0.4.0

NLTHTTPStubServer 0.4.0

测试已测试
语言语言 Obj-CObjective C
许可证 MIT
发布最后发布2014年12月

KAZUMA Ukyo 维护。



  • KAZUMA Ukyo、Tomohiro Moro、masarusanjp 和 akisute

日语

用于 iOS 测试的模拟服务器。

可以通过 expectstub 注册模拟响应。

[[[server expect] forPath:@"/api/"] andJSONResponseResource:@"fake-response" ofType:@"json"];

准备就绪

  • CocoaPods。

Podfile

pod 'NLTHTTPStubServer'
  • 在测试用例的顶部导入 NLTHTTPStubServer.h

第一步

最简单的使用 GHUnit 异步测试用例的例子。服务器 URL 默认为 localhost:12345

- (void)testMostSimply {

    // Get shared server instance.
    server = [NLTHTTPStubServer sharedServer];

    // Register fake response for localhost:12345/fake
    NSData *data = [@"RESPONSE" dataUsingEncoding:NSUTF8StringEncoding];
    [[[server expect] forPath:@"/fake"] andPlainResponse:data];

    // GHUnit: Setup async test
    [self prepare];

    // Access to localhost:12345/fake
    __weak id that = self;
    [NSURLConnection sendAsynchronousRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"https://:12345/fake"]]
                                       queue:[[NSOperationQueue alloc] init]
                           completionHandler:^(NSURLResponse *res, NSData *data, NSError *err) {

                                // Getting a fake response!
                                GHAssertEqualStrings(toString(data), @"RESPONSE", nil);

                                // GHUnit: notify!
                               [that notify:kGHUnitWaitStatusSuccess];

                           }];

    // GHUnit: wait for status...
    [self waitForStatus:kGHUnitWaitStatusSuccess timeout:10];

    // Invoked all expects?
    [server verify];
}

下一步

获取服务器实例并清除

获取共享实例。

NLTHTTPStubServer *server =[NLTHTTPStubServer sharedServer];

移除所有模拟响应。

[server clear];

期望和验证

[[server expect] forPath:@"/fake"];

注册模拟响应。如果请求 /fake,服务器将响应此模拟响应。在此设置后,应首先调用测试的功能,然后

[server verify];

如果期望的响应未被调用,验证方法将抛出异常。

存根

[[server stub] forPath:@"/fake"]

stub 类似于 expect,但是 stub 如果被调用,则存在。verify 忽略通过 stub 注册的响应。

特性

NLTPath

NLTPath 生成复杂的路径。例如,这个请求有两个 GET 参数。

[[server expect] forPath:[NLTPath pathWithPathString:@"/fake" andParameters:@{
        @"k1" : @"v1",
        @"k2" : @"v2",
}]];

这个请求可以匹配 /fake?k1=v1&k2=v2/fake?k2=v2&k1=v1

anyValue

可以使用 [NLTPath anyValue] 来指定参数的值。

[[server expect] forPath:[NLTPath pathWithPathString:@"/fake" andParameters:@{
        @"k1" : [NLTPAth anyValue]
}]];

这个请求可以匹配 /fake?k1=hogeeeeeeee/fake?k1=fugaaaaaaaaaa 等。

HTTP 方法

[[server stub] forPath:@"/fake" HTTPMethodPost];

状态码

[[[server stub] forPath:@"/fake"] andStatusCode:200];

模拟等待

[[[server stub] forPath:@"/fake"] andProcessingTime:10.0f];

检查 POST 主体

[[[server expect] forPath:@"/fake" HTTPMethod:@"POST"] andCheckPostBody:^(NSData *postBody) {
        NSString *postBodyString = [that toString:postBody];
        GHAssertEqualStrings(postBodyString, @"POST_BODY", nil);
    }];

支持的媒体类型

[[[server expect] forPath:@"/fake"] and{ContentType}Response...]
  • JSON
  • HTML
  • XML
  • 普通文本
  • 二进制
    • application/octet-stream