Использование Cucumber для тестирования RubyCAS-клиента - PullRequest
2 голосов
/ 18 марта 2011

У меня очень маленькое свежеприготовленное приложение на Rails 3. Я использую гем RubyCAS-Client для Rails для аутентификации на нашем сервере CAS. Клиент CAS работает, поскольку я могу входить и выходить из своего веб-приложения.

Вот мой Gemfile:

source 'http://rubygems.org'

gem 'rails', '3.0.5'
gem 'mysql2'
gem 'jquery-rails'
gem 'nifty-generators'
# Deploy with Capistrano
# gem 'capistrano'
gem 'rubycas-client'
gem 'rubycas-client-rails', :git => "git://github.com/zuk/rubycas-client-rails.git"

group :development, :test do
  gem 'unicorn'
  gem 'capybara'
  gem 'cucumber'
  gem 'cucumber-rails'
  gem 'database_cleaner'
  gem 'rspec'
  gem 'rspec-rails'
  gem 'launchy'
  gem 'webrat'
end

Вот мои огурцы:

# feature file

Feature: Manage generic_pages
  In order to view pages that are in the base controller(generic)
  I want to visit them and see that they work

  Scenario: Visit the home page
    Given I am on the home page
    Given I am logged in
    Then I should see "Submit a nomination"
    And I should see "Nominee's name"
    And I should see "What are you nominating them for?"
    And I should see "Why are you nominating them for this award?"

# cas-client steps

Given /^I am logged_in$/ do
  CASClient::Frameworks::Rails::Filter.fake("homer")
end

Я получаю ошибку:

Given I am logged_in                                                                        # features/step_definitions/casclient_steps.rb:1
      uninitialized constant CASClient::Frameworks (NameError)
      ./features/step_definitions/casclient_steps.rb:2:in `/^I am logged_in$/'
      features/manage_nominations.feature:9:in `Given I am logged_in'

Все шаги пройдены (если я удалю все требования для входа в Cas). Если я добавлю строки 'require' в геме casclient, шаг "залогинен" также пройдёт, но остальные шаги не пройдут. По какой-то причине создается впечатление, что Cucumber не загружает нужные гемы из Gemfile, и поэтому модуль CASClient недоступен для его среды. Фальсификация строк запроса - это как обход проблемы, но на самом деле она не исправляет ничего, кроме немедленной ошибки.

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

Ответы [ 2 ]

1 голос
/ 08 июня 2011

Поскольку вы используете гем 'rubycas-client-rails', вы должны использовать:

RubyCAS :: Filter.fake ( 'Гомер')

Нет необходимости требовать 'casclient / frameworks / rails / filter'

0 голосов
/ 28 марта 2011

Я тоже столкнулся с этой проблемой, и мне удалось решить ее вручную, выполнив

require 'casclient/frameworks/rails/filter'
...