Тестирование контроллера Rack rSpec с проблемой промежуточного программного обеспечения стойки - PullRequest
2 голосов
/ 09 февраля 2010

У меня большие проблемы с тестированием API контроллера rSpec.Сейчас я использую решение для аутентификации промежуточного программного обеспечения ( Warden ), и когда я запускаю спецификации, прокси-сервер, добавленный промежуточным программным обеспечением, не существует, и все тесты аутентификации выбрасывают NilPointerException с.место.

Похоже, rSpec специально не добавляет промежуточное ПО в конечное приложение, и я хотел бы знать, есть ли способ обезопасить rSpec для этого.

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

Заранее спасибо.

Ответы [ 2 ]

3 голосов
/ 11 февраля 2010

Похоже, что rSpec Controller API для Rails 2.x на самом деле не использует Rack при вызове контроллера, поэтому это невозможно сделать. Однако есть (не доказанное) решение, на которое указал Давид Челимский. Я помещу ответ, который он дал мне, в список рассылки rSpec-user.

Спецификации контроллера не проходят через стойку в рельсах 2, так что нет.

Существуют спецификации интеграции, которые обертывают API тестирования интеграции рельсов. так что вы можете делать все, что можете в тесте интеграции rails. Просто переместите файлы в спецификацию / интеграцию, конвертируйте запросы из "get: index" для "get 'path / to / index'", и вы должны быть в значительной степени хорошо идти.

Дайте нам знать, как это работает.

Ура, David

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

0 голосов
/ 01 апреля 2010

Этот пост о связанной проблеме может пролить некоторый свет и в конечном итоге привести к решению для определения компонентов промежуточного программного обеспечения в конфигурации rSpec (я надеюсь!)

https://rspec.lighthouseapp.com/projects/5645/tickets/963-request-is-nil#ticket-963-14

Это на самом деле не помогает с вашей конкретной проблемой Rails2, но этот запрос был на вершине для «промежуточного программного обеспечения rspec», так что, надеюсь, поможет другим, кто столкнется с проблемой, когда они попробуют бета-версию Rails3 и выше.

...