DTRequestVerifier 1.2.2

DTRequestVerifier 1.2.2

测试已测试
Lang语言 Obj-CObjective C
许可证 MIT
发布最后发布2020年8月

Denys Telezhkin维护。



Build Status   CocoaPod platform   CocoaPod version   License MIT DTRequestVerifier

为单元测试提供的简单易扩展的NSURLRequest验证。

支持属性

  • HTTP方法
  • 协议
  • 主机
  • 路径
  • 查询参数
  • 主体参数(原始,JSON,Plist)
  • HTTP头字段
  • 通过子类化访问其他NSURLRequest属性

要求

  • iOS 5
  • Mac OS X 10.7

使用 XCTest 的示例

NSURL * url = [NSURL URLWithString:@"www.google.com/test?query=foo&count=5"] 
NSURLRequest * request = [[NSURLRequest alloc] initWithURL:url];

DTRequestVerifier * verifier = [DTRequestVerifier verifier];
verifier.host = @"www.google.com";
verifier.path = @"/test";
verifier.queryParams = @{@"query":@"foo",@"count":@"5"};

XCTAssert([verifier verifyRequest:request]);

高级示例

NSDictionary * parameters = @{@"foo":@"bar", @"apikey":@"12345"};
NSURL * url = [NSURL URLWithString:@"www.google.com/user/create"];
NSMutableURLRequest * request = [[NSMutableURLRequest alloc] initWithURL:url];
request.HTTPMethod = @"POST";
[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
[request setHTTPBody:[NSJSONSerialization dataWithJSONObject:parameters
                                                     options:0
                                                       error:nil]];

DTRequestVerifier * verifier = [DTRequestVerifier verifier];
verifier.host = @"www.google.com";
verifier.path = @"/user/create";
verifier.HTTPMethod = @"POST";
verifier.bodyParams = parameters;

XCTAssert([verifier verifyRequest:request]);

OHHTTPStubs

虽然 DTRequestVerifier 可以作为一个独立的工具使用,但在使用其他测试框架时,例如 OHHTTPStubs,它也能提供极大的帮助。

NSString *path =[[NSBundle mainBundle] pathForResource:@"Example" ofType:@"json"];
[OHHTTPStubs stubRequestsPassingTest:^BOOL(NSURLRequest *request) {
        return [verifier verifyRequest:request];
    } 
                    withStubResponse:^OHHTTPStubsResponse *(NSURLRequest *request) {
        return [OHHTTPStubsResponse responseWithFileAtPath:path
                                                statusCode:200
                                                   headers:@{@"Content-Type":@"application/json"}];
}];

最佳实践

AFNetworking 2.0 引入了一个优秀的请求序列化系统,这个系统可以大大减少创建 NSURLRequests 所需的代码量。你绝对应该去看看!