我在lib / user_session.rb中有这个代码
它由我的一个控制器使用,包括UserSession.
我该怎么测试呢?我在spec / lib / user_session.rb中添加了测试,但代码依赖于我不确定如何模拟的会话.
module UserSession
def viewed
session[:viewed] ||= Array.new
return session[:viewed]
end
def viewed_add(id, name)
if viewed.select{|b| b[:id] == id}.empty?
session[:viewed] << {:id => id, :name => name}
end
return session[:viewed]
end
def viewed_delete(id)
unless id.nil?
session[:viewed].delete_if{|b| b[:id] == id}
return session[:viewed]
end
end
end
最佳答案 您需要在会话中模拟或存根[]运算符.例如,在您的规范中,您可以执行以下操作:
session.stub!(:[]).and_return "foo"
要么
session.should_receive(:[]).with(:viewed)