Rails学习 - 固件
参考书籍: Ruby on Rails教程(第四版)
固件(fixture)是Rails中组织测试数据的一种方式,这些数据会载入测试数据库
简单的使用示例
例如,我们有一个User模型,它有name,email,password_digest三个字段,那么我们可以通过如下操作来进行测试
- 在模型对应的固件文件中编写测试数据
unistart:
name: unistart
email: 2604249649@qq.com
password_digest: <%= User.digest('password') %>
- 编写测试文件,并使用固件中的数据
require "test_helper"
class UsersLoginTest < ActionDispatch::IntegrationTest
def setup
@user = users(:unistart)
end
...
test "login with valid information" do
get login_path
post login_path, params: { session: { email: @user.email, password: "password" } }
assert_redirected_to @user # 检查重定向地址是否正确
follow_redirect! # 访问重定向地址
assert_select "a[href=?]", login_path, count: 0
assert_select "a[href=?]", logout_path
assert_select "a[href=?]", user_path(@user)
end
end
users(:unistart)的说明
在上面的测试文件中,我们使用setup方法,在每个测试用例执行前生成一个名为@user的实例变量,同时该变量的值由对应固件文件users.yml中定义的unistart提供,也即users方法对应users.yml固件文件,:unistart对应固件文件中定义的用户unistart