代码之家  ›  专栏  ›  技术社区  ›  Mark A. Nicolosi

Rails控制器中的功能测试重定向

  •  0
  • Mark A. Nicolosi  · 技术社区  · 17 年前

    我试图使它成为这样,当一个模型是通过创建的行动,它重定向到它的显示行动创建。这部分工作正常,但我无法让我的功能测试正常运行。这些测试已根据脚手架提供的内容进行了修改。

      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在下面指出,这可能是因为它在数据库中创建了一个新记录,所以它重定向到该记录。我如何才能找到刚刚使用CREATEPOST请求创建的新记录?

    2 回复  |  直到 17 年前
        1
  •  1
  •   Mark A. Nicolosi    17 年前

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

    断言\u重定向\u到赋值(:thing)

        2
  •  0
  •   Maximiliano Guzman    17 年前

    免责声明:(我还没用过《工厂女孩》……所以还是少吃一点吧) 你的工厂不是在创建数据库记录吗?如果是这样,您将创建两次,一次使用工厂,另一次使用控制器;那么新记录的id与工厂记录的id不同是正常的。。。