【问题标题】:Functional testing redirection in a Rails controllerRails 控制器中的功能测试重定向
【发布时间】:2009-05-19 07:12:07
【问题描述】:

我正在尝试这样做,因此当通过创建的操作创建模型时,它会重定向到其显示操作。那部分工作正常,但我无法让我的功能测试正常运行。这些测试已根据脚手架提供的内容进行了修改。

  def setup
    @thing = Factory(:thing)
    assert(@thing.id, "Virtual fixture not valid.")
  end

  def test_create_valid
    Thing.any_instance.stubs(:valid?).returns(true)
    post :create
    assert_redirected_to @thing
  end

我在设置中使用 factory_girl。当我运行我的测试时,我得到了这个:

预期的响应是重定向到 http://test.host/thing/2 但 被重定向到http://test.host/thing/3

我在这个控制器中用我的更新操作做了一些非常相似的事情,测试看起来一样,但它有效。我对发生了什么感到有些困惑。

编辑:Maximiliano 在下面指出,这可能是因为这会在数据库中创建一条新记录,因此它会重定向到该记录。如何找到刚刚使用 create post 请求创建的新记录?

【问题讨论】:

    标签: ruby-on-rails ruby testing


    【解决方案1】:

    在 Max 的帮助下解决了这个问题(谢谢!)要获取在数据库中创建的对象,我必须使用 assigns():

    assert_redirected_to assigns(:thing)

    【讨论】:

      【解决方案2】:

      免责声明:(我还没有使用过工厂女孩......所以请谨慎使用) 你的工厂不是在创建数据库记录吗?如果是这样,您将创建两次,一次使用工厂,另一次使用控制器;那么新记录的id和工厂的id不一样也是正常的...

      【讨论】:

      • 有道理。如何获取新记录,以便检查我们是否重定向到它?
      猜你喜欢
      • 2013-05-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多