首先,需要搭建本地环境,参考 PhpStorm 本地调试;核心步骤是配好 IDE 环境以及修改 hosts 文件。
其次,使用单元测试,参考 iOS 测试学习小结;显然,本该一键完成的测试,不应该调出模拟器 / 真机的界面去人工操作。
XDebug
通过区分请求是否带 XDEBUG_SESSION=PHPSTORM
这一 Cookie 去判断是否需要执行断点操作。
以 AFNetworking
为例,需要做两件事情。
- 在测试中进行同步请求而非异步
- 请求中带上所需 Cookie
1 2 3 4 5 6 7 8 9 10
| - (void)testThatItAppendsAString; { NSString *s1 = @"Foo"; XCTestExpectation *expectation = [self expectationWithDescription:@"Handler called"]; [s1 appendString:@"Bar" resultHandler:^(NSString *result){ [expectation fulfill]; XCTAssertEqualObjects(result, @"FooBar"); }]; [self waitForExpectationsWithTimeout:0.1 handler:nil]; }
|
1 2 3 4 5 6 7 8 9 10 11
| AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; manager.requestSerializer = [AFJSONRequestSerializer serializer];
[manager.requestSerializer setValue:@"XDEBUG_SESSION=PHPSTORM" forHTTPHeaderField:@"Cookie"];
[manager POST:url parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) { } failure:^(AFHTTPRequestOperation *operation, NSError *error) { }];
|
环境布置完毕之后,执行 Command
+ U
即可进行单元测试,本地服务器在需要的地方打断点;整个过程无需依赖网络,简洁高效。