【发布时间】:2016-01-28 02:26:01
【问题描述】:
我正在使用 rspec,但在尝试测试我的 ApplicationController 时遇到问题。
是否有可能以某种方式设置控制器内部的值?这就是我现在拥有的:
class ApplicationController < ActionController::Base
include CurrentUser
before_action :load_account
private
def load_user
@account = current_user.account if current_user.present?
end
end
包含的模块只是添加了一个返回用户的 current_user 方法。
module CurrentUser
def self.included(base)
base.send :helper_method, :current_user
end
def current_user
User.find_by(.....) # returns a User object
end
end
所以当我测试我的控制器时,我不需要测试 current_user.rb 的功能,我可以在测试运行之前以某种方式注入 current_user 的值吗?
示例控制器规格:
require 'rails_helper'
RSpec.describe ProductsController, type: :controller do
it "...." do
get :new
expect(response.body).to eq("hello")
end
end
但目前任何期望 current_user 的控制器都失败了,因为它是 nil。
【问题讨论】:
标签: ruby-on-rails rspec