2017-02-02 3 views
6

Я хочу сделать Moya заглушкой в ​​моих Quick/Nimble тестах BDD. Moya имеет параметр sampleData, который я создал с помощью JSON файла:Moya stub запрос в тестах BDD

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

Создал ли ваш поставщик тестов, используя stubClosure? Как этот 'let provider = RxMoyaProvider (stubClosure: MoyaProvider.immediatelyStub)' –

+0

Спасибо! Этот код работает для меня. – Svyatoslav

Смежные вопросы