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
不仅仅方法,但基本可以直接用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