作者热门文章
- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我目前正在开发一个由 Redis 数据库、EventMachine 和 Sinatra(用于轻量级 API)组成的 Ruby 项目。我们正在使用 RSpec 进行测试,到目前为止,一切都很顺利。
但是,现在我们需要开始(最低限度地)与 MySQL 数据库对话。我们决定走 ActiveRecord 路线(只是因为它太好!)并且到目前为止一切都很顺利。但是,我们的测试遇到了一个小问题。我在网上找到了一些使用 mock_model
和 mock
与 RSpec 的资源,但是,我不断得到:
undefined method `mock_model'
undefined method `mock'
错误。在不安装整个 Rails 框架的情况下,我需要使用什么 gem 才能使它们工作(看起来有点矫枉过正)。
或
我应该使用哪些其他模拟/stubing 方法/gem 来模拟我的 AR 模型?我真的很喜欢语法的灵 active ,例如:
@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)
最佳答案
对于 Active Record 模型,RSpec 有方法 mock_model
,它自动创建几个 stub ,所有 Ruby on Rails 模型通用,并接受哈希。
因此,要在 Rails 之外使用 mock_model
,您应该连接 Active Record 和 rspec-rails扩展名。
为了确保您可以查看 here mock_model
定义在哪里。
关于ruby - 如何在 Rails 之外将 mock_models 与 RSpec 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10115478/
我是一名优秀的程序员,十分优秀!