0

尽管知道该功能在应用程序中有效,但我的测试失败了。我的直觉说我应该尝试保存我创建的东西,但我不确定如何在 assert_difference 块中执行此操作,因为它看起来不像 newthing被分配给我可以使用的变量.save。感谢您提供的任何建议。

测试:

test "should create thing" do
    assert_difference('thing.count') do
      post :create, thing: { thing_type_id: @thing.thing_type_id, name: @thing.name}
    end

输出:

 1) Failure:
test_should_create_thing(thingsControllerTest) [C:/../thing_controller_test.rb:20]:
"thing.count" didn't change by 1.
<3> expected but was
<2>.
4

1 回答 1

2

听起来您的数据库中可能还有一些剩余状态。我明白了expected but was <2>,这意味着您的数据库中已经有两个Things。

您可以尝试在测试之间清除数据库状态。根据您的数据库检查database_cleanergem。

此外,您可能已经创建了该对象,因为@thing. 如果是这种情况,这将按预期工作。

您可以将控制器排除在等式之外,只需测试一个 normal 即可验证这一点Thing::create

test "creates a new Thing" do
  assert_difference('Thing.count') do
    Thing.create thing_type_id: @thing.thing_type_id, name: @thing.name
  end
end
于 2013-05-06T16:16:49.707 回答