我有推荐系统。因此,如果用户(尚未注册)访问链接,则会设置Cookie。
application_controller.rb
before_action :set_referral
def set_referral
if params[:referral_token].present?
cookies.permanent[:referral_token] = params[:referral_token]
end
end
然后用户可以做任何他们想做的事情,如果他们稍后注册,我想检查该推荐令牌以便为推荐用户提供信用。
这是一个很好/最好的方法吗?
如何在RSpec中测试?我基本上只需要访问一条路线来设置令牌,然后注册。
referral_spec.rb
get "/some-route", params: {referral_token: "123abc"}, headers: something_here_maybe?
post "/users", params: user_registration_params, headers: same_as_previous_user
RSpec中是否还有确保两个请求都来自同一个浏览器会话?我对cookies / sessions /等没有多少经验。所以也许我的整个理解在这里是错误的。有没有办法测试这个?有没有更好的方法来实现这一目标?
答案 0 :(得分:0)
检查controller specs
是否正确设置了Cookie:
it 'sets a cookie with referral code when it is present in params' do
get root_path, { referral_code: 'myreferralcode' }
expect(response.cookies['referral_code']).to eq('myreferralcode')
end
如果您想测试完整路径,例如当使用推荐代码设置cookie并且用户注册并且您想要检查模型上是否设置了推荐代码时,您应该使用feature specs。