Я ищу лучший способ написания модульного теста для кода, который отправляет POST во внешний веб-сервис. Тело запроса POST представляет собой XML-документ, описывающий действия и данные, которые должен выполнить веб-сервис.
Теперь я обернул веб-сервис в его собственный класс (похожий на ActiveResource), и я не вижу никакого способа проверить точный XML, сгенерированный классом, не нарушая инкапсуляцию, раскрывая некоторые из внутренних генераций XML как публичные методы в классе. Кажется, что это запах кода - с точки зрения пользователей класса, они не должны знать и не заботиться о том, как класс на самом деле реализует вызов веб-службы, будь то с помощью XML, JSON или почтовых голубей.
Для примера класса:
class Resource
def new
#initialize the class
end
def save!
Http.post("http://webservice.com", self.to_xml)
end
private
def to_xml
# returns an XML representation of self
end
end
Я хочу иметь возможность протестировать сгенерированный XML-файл, чтобы убедиться, что он соответствует требованиям веб-службы. Так можно ли лучше всего это сделать, не делая to_xml публичным методом?