我目前正在开发一个 Ruby 项目,该项目由 Redis DB、EventMachine 和 Sinatra(用于轻量级 API)组成。我们正在使用 RSpec 进行测试,到目前为止,一切都很顺利。
然而,现在我们需要开始(最少)与 MySQL 数据库对话。我们决定走 ActiveRecord 的路线(只是因为它太棒了!),到目前为止一切都很顺利。但是,我们的测试遇到了一个小问题。我在网上找到了一些使用RSpec 的资源,但是,我不断得到mock_model
:mock
undefined method `mock_model'
undefined method `mock'
错误。在不安装整个 Rails 框架的情况下,我需要使用什么宝石才能使它们工作(看起来有点矫枉过正)。
或者
我应该使用哪些其他模拟/存根方法/宝石来模拟我的 AR 模型?我真的很喜欢语法的灵活性,例如:
@user = double(NS::UserAccount)
@car = double(NS::Car)
NS::UserAccount.stub(:find).with(@valid_user_id).return(@user)
NS::Car.stub(:find).with(@valid_car_id).return(@car)
更新
我的 Gemfile 如下所示:
group :test do
gem 'rspec', '~> 2.8.0'
gem 'rspec-expectations', '~> 2.8.0'
gem 'rspec-mocks', '~> 2.8.0'
gem 'autotest-standalone'
gem 'em-spec', '~> 0.2.6'
gem 'rack-test', '~> 0.6.1'
gem 'factory_girl', '~> 3.1.0'
end
此外,在spec_helper.rb
文件的顶部,我有以下内容:
require 'bundler/setup'
Bundler.require(:test, :development)