Я пытаюсь запустить тесты 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'