首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >嵌套表单的功能测试

嵌套表单的功能测试
EN

Stack Overflow用户
提问于 2013-02-25 08:02:06
回答 2查看 825关注 0票数 0

我有两个模型:公司和用户。一个公司有多个用户,一个用户属于公司。我创建了一个嵌套表单:当您注册时,您必须创建公司和第一个用户。

这个表单工作起来很棒,但我真的不知道如何为它编写测试。下面是scaffold生成的功能测试:

代码语言:javascript
复制
test "should create company" do
  assert_difference('Company.count') do
    post :create, company: { city: @company.city, name: @company.name}
  end
  assert_redirected_to company_path(assigns(:company))
end

下面是我为了测试用户创建所做的事情:

代码语言:javascript
复制
test "should create company and first user" do
  assert_difference('Company.count') do
    assert_difference('User.count') do
      post :create, company: { city: @company.city, name: @company.name}, user: {name: @user.name, email: @user.email}
    end
  end
  assert_redirected_to company_path(assigns(:company))
end

当我运行我的测试时,出现以下错误:

代码语言:javascript
复制
1) Failure:
test_should_create_company_and_first_user(CompaniesControllerTest) [test/functional/companies_controller_test.rb:21]:
"User.count" didn't change by 1.
<3> expected but was
<2>.

我在网上找不到帮助,所以我希望这里有人能帮我:)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-04-09 11:58:45

解决方案

公司模型

代码语言:javascript
复制
attr_accessible :city, :name, :users_attributes
has_many :users
accepts_nested_attributes_for :users

用户模型

代码语言:javascript
复制
attr_accessible :email, :name
belongs_to :company

公司控制器测试

代码语言:javascript
复制
test "should create company and first user" do
  assert_difference('Company.count') do
    assert_difference('User.count') do
      post :create, company: { 
        city: @company.city, 
        name: @company.name, 
        users_attributes: {
          user: {name: @user.name, email: @user.email}, 
          user: {name: @user.name, email: @user.email}
        }
      }
    end
  end
  assert_redirected_to company_path(assigns(:company))
end

您可以在users_attributes中使用一个或多个用户进行测试。

感谢@drewinglis的帮助:D

票数 0
EN

Stack Overflow用户

发布于 2013-02-25 08:21:33

如果表单实际上是嵌套的,那么您应该将user对象放在测试请求中的company对象中,如下所示:

代码语言:javascript
复制
post :create, company: { city: @company.city, name: @company.name, user: {name: @user.name, email: @user.email} }
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15058198

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档