我想在Moya BDD测试中发出Quick/Nimble存根请求。 Moya我使用JSON文件创建了sampleData
参数:
var sampleData: Data {
switch self {
case .getPlaces:
// Provided that project have a file named get_places.json in it's bundle.
guard let path = Bundle.main.path(forResource: "get_places", ofType: "json"),
let data = Data(base64Encoded: path) else {
return Data()
}
return data
case .getPlaceDetail:
// Provided that project have a file named get_place_detail.json in it's bundle.
guard let path = Bundle.main.path(forResource: "get_place_detail", ofType: "json"),
let data = Data(base64Encoded: path) else {
return Data()
}
return data
}
}
如何在测试中使用此参数?在测试中提出Moya存根请求的想法吗?
谢谢!
答案 0 :(得分:12)
只需像在实际代码中那样使用您的提供商。 Moya检测到当前目标是测试目标,并将返回样本数据而不是执行请求
答案 1 :(得分:0)
如果您仍然想使用示例数据进行开发(如果尚未准备好后端),则可以通过以下方式创建通过endpoint
闭包的Moya提供程序:
let endpoint = { (target: NetworkApiService) -> Endpoint in
return Endpoint(url: URL(target: target).absoluteString,
sampleResponseClosure: { .networkResponse(200, target.sampleData) },
method: target.method,
task: target.task,
httpHeaderFields: target.headers)
}
let provider = MoyaProvider<NetworkApiService>(endpointClosure: endpoint, stubClosure: MoyaProvider.immediatelyStub)
它将返回在public var sampleData: Data
协议的TargetType
中指定的数据。