Rails测试(MiniTest)中Assigns方法的目的是什么?

问题描述 投票:22回答:2

在自动生成的测试中使用:

test "should create item" do
  login_user
  assert_difference('Item.count') do
    post :create, item: { creator: @item.creator, title: @item.title, user_id: @item.user_id, text: 'Hello, world!' }
  end

  assert_redirected_to(assigns(:item))
end

Rails documentation没有任何描述。这种方法的目的是什么以及如何使用它?

ruby-on-rails minitest
2个回答
28
投票

这表示控制器是否定义了实例变量@item="something"

您可以通过以下方式在测试中获取实例变量:

# It will check if the instance variable is a string.
assert_kind_of String, assigns(:item)

3
投票

请注意assigns在Rails 5中已弃用,并提取为单独的gem。要使用它,您必须在gemfile中包含“ rails-controller-testing”。

© www.soinside.com 2019 - 2024. All rights reserved.