Использование огурца со статической базой данных - PullRequest
1 голос
/ 18 ноября 2010

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

По некоторым причинам у меня проваливаются некоторые тесты, которые, по-видимому, связаны с тем, что он не может найти данные.Есть идеи о том, как заставить это работать и почему ему не понравятся «предварительно отобранные» базы данных?

Наши данные слишком сложны, чтобы пытаться воссоздать их через фабрики / устройства.Там просто нет пути.

Вот пример:

Scenario: a tech logs in                                                                             
  Given I am on the login page                                                                  
  And user with id 2328 exists                                                                 
  When I login as "user" with password "password"                                            
  Then I should be on the dashboard page                                                             
  And I should see "Logged in as: USER" 

Шаг:

Given /^user with id (\d+) exists$/ do |id|
  Employee.exists? id
end


When /^I login as "([^\"]*)" with password "([^\"]*)"$/ do |username, password|
  visit login_url
  fill_in "username", with: username 
  fill_in "pwd", with: password
  click_button "Login"
end

Может быть, это мои шаги и не имеет ничего общего с базой данных, ноЯ не могу понять, почему он не терпит неудачу на шаге And user with id 2328 exists, когда я даю ему неправильное число.

Я видел этот , но это, похоже, не влияет наflow.

Наконец, вот фактический метод входа в систему (поверьте мне, я знаю, насколько ужасна эта проверка входа в систему, просто проверяя, у нас есть разрешения для базы данных):

def login
    if request.post?
      # get database config for env
      configs = ActiveRecord::Base.configurations[Rails.env]
      begin
        # attempt to connect to the db
        plsql = plsql_connect(params[:username], params[:pwd])

        # if no exception, get the employee ID and location
        session[:employee_id] = plsql.hes.installer_web_pkg.get_employee_pk.to_i
        session[:employee_location] = plsql.hes.installer_web_pkg.fn_get_truck_location(session[:employee_id]).to_i

        # logout
        plsql.logoff

        # dashboard time!
        redirect_to dashboard_url(session[:employee_id].to_i)
      rescue Exception => err
        # could not connect, fail!!
        flash.now[:notice] = "Username/password not valid (or locked out of account). Try again or contact the HelpDesk."
        render :action => "login"
      end
    end
  end

Каждый разЯ бегу, я получаю:

expected: "/dashboard",
     got: "/login" (using ==) (RSpec::Expectations::ExpectationNotMetError)
./features/step_definitions/web_steps.rb:198:in `/^(?:|I )should be on (.+)$/'
features/tech_queue.feature:11:in `Then I should be on the dashboard page'
...