小编dam*_*anw的帖子

InstanceDouble(session) (匿名)> 收到意外消息 :[]= with

我对 rspec 行为有疑问。我尝试为我使用的服务编写测试session,以读取一些值并覆盖该值。

例如我想测试什么

class CurrentCartService
  attr_reader :user, :session

  def initialize(user, session)
    @user = user
    @session = session
  end

  def cart_id
    { id: session[:cart_id] }
  end

  def assigne_cart_to_session
    session[:cart_id] = current_cart.id
  end

Run Code Online (Sandbox Code Playgroud)

spec

describe CurrentCartService do
  let(:current_user) { user }
  let(:session) { double('session') }

  let!(:cart) { create(:cart) }

  subject { described_class.new current_user, session }

  before do
    allow(session).to receive(:[]).and_return(cart.id)
  end

  describe '#call' do
    context 'when user is not signed' do
      let(:user) { nil }
      it { subject.call }
    end …
Run Code Online (Sandbox Code Playgroud)

ruby rspec ruby-on-rails ruby-on-rails-5

5
推荐指数
1
解决办法
7334
查看次数

标签 统计

rspec ×1

ruby ×1

ruby-on-rails ×1

ruby-on-rails-5 ×1