【发布时间】:2010-11-10 10:25:01
【问题描述】:
我在尝试使用 'should' 和 'factory_girl' 来为 Rails 应用程序中的 'create' 创建功能测试时遇到问题。我创建了一个简单的项目,脚手架用户,在 test_helper.rb 中添加了“should”(我系统上的当前 gem 版本 2.11.3)和“factory_girl”。手动创建用户工作正常。以下是重现失败的步骤:
- rails 项目
- 脚手架用户名:字符串
-
添加 test_helper.rb :
require 'shoulda' require 'factory_girl' rake db:迁移
-
为用户编写以下功能测试(覆盖 users_controller_test.rb):
class UsersControllerTest < ActionController::TestCase Factory.define(:user) do |u| u.name 'joe' end context "should create user" do context "with valid data" do setup do User.any_instance.expects(:save).returns(true).once User.any_instance.stubs(:id).returns(1001) post :create, :user => {} end should_assign_to :user, :class => User should_set_the_flash_to "User was successfully created." should_redirect_to("user page"){user_path(1001)} end end end 使用“rake test:functionals”运行测试显示失败:
预期的响应是重定向到
<http://test.host/users/1001>,但 重定向到<http://test.host/users>。
我也玩过“should_redirect_to”,因为我看到“should_redirect_to”已被弃用, 但没有运气。你有什么想法吗?
提前谢谢你,
玛丽安·瓦西尔·卡拉曼。
【问题讨论】:
-
您确认手动创建用户时重定向正确吗?
-
手动创建用户时工作正常。此外,其他 2 个断言很好。
标签: ruby-on-rails functional-testing shoulda factory-bot