Использование cucumber и Rspec для разработки SOAP-клиента с BDD - PullRequest
1 голос
/ 25 июня 2009

Как опыт обучения, я разрабатываю небольшое приложение на Rails, которое должно запрашивать существующий API / веб-сервис SOAP (используя гем handsoap) и просто представляет собранную там информацию пользователю.

Мне нравится использовать rspec и я привык к огурцам для тестирования моих приложений. Часть, которая поставила меня в тупик, - это то, как проверить взаимодействие с API, то есть «непредставление» части передачи туда и обратно XML-запросов и ответов.

Любые советы и указатели очень ценятся!

Спасибо!

Ответы [ 3 ]

1 голос
/ 06 июля 2009

Взгляните на fakeweb камень.

Это помогает предотвратить совместимость сети, то есть вы можете создавать тестовые ответы:

  FakeWeb.register_uri(:get, "http://example.com/test1", :body => "Hello World!")

и отключить возможность отправки http-запросов:

  FakeWeb.allow_net_connect = false
  Net::HTTP.get(URI.parse("http://example.com/"))
  => raises FakeWeb::NetConnectNotAllowedError
0 голосов
/ 13 сентября 2009

В новейшей версии Handsoap вы можете использовать фиктивный http-драйвер для макета на http-уровне. См .: Http::HttpMock и пример в tests/account_test.rb

0 голосов
/ 30 июня 2009

Я предполагаю, что вы говорите о функциональных / интеграционных стилях, а не о модульных тестах, и в этом случае я бы, вероятно, подумал о том, чтобы создать интерфейс для веб-службы и модульное тестирование кода на более низком уровне.

Но вернемся к огурцу. Как указывает Аслак Хеллесей в Переполнение стека q 810410 , нет ничего, что могло бы помешать вам сделать это. Когда вы написали сценарии того, какое поведение вы собираетесь тестировать, вам просто нужно создать экземпляр нужных объектов в определениях шагов и вызвать соответствующие методы. Возможно также комбинирование с несколькими утверждениями о возвращаемых значениях или контенте, если это то, что вам нужно. См. Ожидания Rspec , как загрузить rspec should() с огурцом.

...