我是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
答案 0 :(得分:1)
每次测试运行后都会清理测试数据库,因此在运行测试套件后您将无法看到任何记录(取决于您获胜的清洁方法,甚至无法在数据库中看到任何内容)如果您使用与DB的不同连接,则在测试期间进行em>。
如果要测试该用户是否已保存,则需要在集成测试中进行测试。例如
# ...
assert_text "Welcome! You have signed up successfully."
assert(User.where(email: "abc@gmail.com").exists?)
或更好的事件 - 编写一个检查它的单元测试。