我正在尝试在rails 5中编写测试。我修改了一些生成的脚手架测试。但它似乎从某个地方获得了固定装置,并且只使用这个来源进行测试。
控制器上的“创建”方法接受一个用户使用电子邮件和一个带网址的页面列表。
我的测试班:
require 'test_helper'
class UsersControllerTest < ActionDispatch::IntegrationTest
test "test" do
assert_difference('User.count', 1) do
post users_url, params: { user: { email: 'a@a' }, pages:[{url:'a'},{url:'b'},{url:'c'}] }, as: :json
end
assert_response 201
end
end
-------------------- fixtures --------------------------
_______PAGES.YML______ __________USERS.YML__________
| one: | | one: |
| url: one.html | | email: testmail@mail.com |
| | | |
| two: | | two: |
| url: pageTwo.html | | email: two@mail.com |
|______________________| |_____________________________|
调试时,在保存页面之前,值是正确的:
<Page id: nil, url: "a", user_id: 980190963, created_at: nil, updated_at: nil>
但是在测试完成后我的db就像:
--USERS
id |email |created_at |updated_at |
----------|------------------|--------------------|--------------------|
980190962 |testmail@mail.com |2017-03-21 17:43:50 |2017-03-21 17:43:50 |
298486374 |two@mail.com |2017-03-21 17:43:50 |2017-03-21 17:43:50 |
--PAGES
id |url |contato_id |created_at |updated_at |
----------|-------------|-----------|--------------------|--------------------|
980190962 |one.html | |2017-03-21 17:43:50 |2017-03-21 17:43:50 |
298486374 |pageTwo.html | |2017-03-21 17:43:50 |2017-03-21 17:43:50 |
为什么我的电子邮件和网址价值未被保存?还不是fk?
感谢。
答案 0 :(得分:0)
它看起来不是rspec,但我试着回答。
Rails可以在运行测试时清理数据库表,因此它会清理数据库中的所有数据并创建保存在数据库中的新夹具数据。