stub 与mock之间的区别是,给接受者fake一个方法,并阻断原方法,参数可以是字符串、symbol,后者则是创建一个对象。https://ruby-china.org/topics/10977。后者创建一个对象
不仅仅方法,但基本可以直接用mock解决https://github.com/rspec/rspec-mocks#mock-objects-and-test-stubs
gem install rspec
gem install rspec-mocks
创建一个实例
book = instance_double("Book", :pages => 250)
创建这个实例的方法3种方式
allow(book).to receive(:title) { "The RSpec Book" }
allow(book).to receive(:title).and_return("The RSpec Book")
allow(book).to receive_messages(
:title => "The RSpec Book",
:subtitle => "Behaviour-Driven Development with RSpec, Cucumber, and Friends")
创建类方法
一种是使用stub,一种是使用mock的 class_double 与instance_double的区别
(1)BidFeedBack.stub(:test1).and_return("999999999")
(2)bid = class_double("BidFeedBack")
allow(BidFeedBack).to receive(:test1).and_return("2222222222")
require 'mock_redis'
mockredis = MockRedis.new
mockredis.hset("youku:creatives:55","id","55")//给mock_redis里面存储值
Creative.redis = mockredis 指向给某个对象,也可以直接
https://relishapp.com/rspec/rspec-mocks/v/3-4/docs/basics/test-doubles
分享到:
相关推荐
mr = MockRedis.new一样容易require 'mock_redis'; mr = MockRedis.new require 'mock_redis'; mr = MockRedis.new 。 然后,您可以在其上调用与在真正的Redis对象上调用的方法相同的方法。 例如: >> require '...
Ruby 的模拟 Redis 宝石模拟Redis MockRedis 提供与 相同的接口redis-rb,但它将数据存储在内存中,而不是与 Redis 服务器通信。它旨在用于测试。要求Ruby 3.x redis-rb 5.x当前实现针对 Redis 6.2 和 7.0 进行了...
Ruby、LUA、Swift、OC、Kotlin、Rust、Scala、R Linux Shell Web 服务器 Nginx Apache 数据库 MySQL 字符集和排序规则 存储引擎 InnoDB 和 MyISAM SQL 索引 事务 分库分表 NoSQL 列式数据库 KV 数据库 文档型数据库 ...
在测试环境中,你可能需要模拟后台服务,如作业队列(如 Sidekiq 或 Resque)、缓存服务器(如 Redis 或 Memcached)和搜索引擎(如 Elasticsearch)。这些服务通常通过配置或 mock 对象来在测试中模拟。 例如,...
Resin 是一款高性能、高稳定性的Web服务器/应用服务器,支持多种语言如Java、Ruby等。 #### 数据库 - **H2**: 框架。H2 是一个开源的嵌入式数据库,支持多种模式:内存模式、文件模式及网络服务器模式。 - **SQLite...