用户注册集成测试不在数据库中插入值

时间:2018-03-13 13:40:50

标签: ruby-on-rails ruby integration-testing

我是rails测试的新手,我已经为用户注册编写了集成测试。测试工作正常,但它没有在数据库中插入记录。

这是代码

require 'test_helper'

class SignupTest < ActionDispatch::IntegrationTest
  test "user signup" do
    visit new_user_registration_path
    fill_in "user_email",    with: "abc@gmail.com"
    fill_in "user_password", with: "password"
    fill_in "user_password_confirmation", with: "password"
    click_button "Sign up"
    assert_text "Welcome! You have signed up successfully."
  end
end

这是我用来运行测试的命令

rake test:integration

当我运行测试时,结果是

Run options: --seed 62721

# Running:

.

Finished in 3.116669s, 0.3209 runs/s, 0.3209 assertions/s.
1 runs, 1 assertions, 0 failures, 0 errors, 0 skips

我还检查了日志,但日志中没有。

这是我的测试gemlist

group :test do
  gem 'capybara'
  gem 'capybara-webkit'
  gem 'vcr'
  gem 'webmock'
  gem 'launchy'
end

1 个答案:

答案 0 :(得分:1)

每次测试运行后都会清理测试数据库,因此在运行测试套件后您将无法看到任何记录(取决于您获胜的清洁方法,甚至无法在数据库中看到任何内容)如果您使用与DB的不同连接,则在测试期间进行em>。

如果要测试该用户是否已保存,则需要在集成测试中进行测试。例如

# ...
assert_text "Welcome! You have signed up successfully."
assert(User.where(email: "abc@gmail.com").exists?)

或更好的事件 - 编写一个检查它的单元测试。

Related answer