2017-02-02 57 views
6

我想在我的Quick/Nimble BDD测试中做出Moya存根请求。 MoyasampleData参数我使用JSON文件中创建:BDY测试中的Moya存根请求

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存根请求?

谢谢!

回答

10

只需使用您的提供商就像您在真实代码中所做的那样。 Moya检测到当前目标是测试目标,将返回样本数据而不是执行请求

+0

我正在尝试编写一个测试,它检查来自getPlaces请求的响应,但是以下两个测试都成功响应此响应: 'testProvider.request(.getPlaces(地点: “”)){在 地方希望(地方)。为了(beNil()) }' 和 'testProvider.request(.getPlaces(地点: “”)) {地点在 期望(地点).toNot(beNil()) }'。 为什么会发生这种情况?我做错了什么? – Svyatoslav

+3

您是否使用stubClos​​ure创建了测试提供程序?像这样'let provider = RxMoyaProvider (stubClos​​ure:MoyaProvider.immediatelyStub)' –

+0

谢谢!此代码适用于我。 – Svyatoslav