【发布时间】:2014-07-30 21:30:20
【问题描述】:
我正在尝试构建一个请求规范,以测试通过设计 API 创建新用户的全部范围。
我目前在 RegistrationsController 规范中有这个,但如果我想按照邮件链接到确认控制器,这将不起作用。
我无法找到一个很好的例子来说明人们如何测试从一个控制器到另一个控制器的“切换”以及间歇性“步骤”(我们在整个过程中散布了自定义设计方法,该测试将也包括在内)。
it "creates a user, sends a welcome email, confirms the user, and registers the user in email campaigns" do
post :create, {user: new_user_params}
last_email = ActionMailer::Base.deliveries.last.body
ConfirmationsController.any_instance.should_receive(:after_filter_method_to_subscribe_user)
redirect_to confirmation_link(last_email) # helper method
last_email.should include("Thanks for joining!")
user = User.find_by_first_name(new_first_name)
user.confirmed?.should be_true
user.email_lists.should_not be_empty
end
编辑:
我还应该补充一点,我需要 http_basic_auth 来运行我包含在规范/支持文件中的规范,并将 request.env['HTTP_AUTHORIZATION'] 设置为存储在 API::Base 控制器中的变量。我目前在 spec/request 文件夹中运行规范时将 nil 作为请求对象,我需要运行规范。
编辑:
感谢看过的人。在将两个 SO 搜索和我拥有的代码拼凑在一起后,我想通了。我会尽可能为未来的 SO'ers 发布答案。
【问题讨论】:
-
我认为您更应该关注功能/集成规范。
标签: ruby-on-rails rspec devise integration-testing