Rails 5集成测试仅使用灯具值

时间:2017-03-21 18:13:49

标签: ruby-on-rails

我正在尝试在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?

感谢。

1 个答案:

答案 0 :(得分:0)

它看起来不是rspec,但我试着回答。

Rails可以在运行测试时清理数据库表,因此它会清理数据库中的所有数据并创建保存在数据库中的新夹具数据。