"stands in for a real object" do book_double = double("book", title: "Whale Sounds, Volume I") book_double.title expect(book_double.title).to eq("Whale Sounds, Volume I") end end end 3
it "stands in for a real object" do book_double = double("book", title: "Whale Sounds, Volume I") book_double.method_that_does_not_exist # => <Double "book’> received unexpected message :method_that_does_not_exist end end end 4
do describe "#title" do it "stands in for a real object" do invalid_book_double = instance_double("Book", description: "") # => the Book class does not implement the instance method: description end end end 5
def self.from_amazon(asin:) book = AmazonBookFinder.run(asin) new(book: book) end delegate :title, to: :@book private_class_method :new def initialize(book:) @book = book end end 10
do describe "#title" do it "prepends title with 'best seller'" do book = Book.from_amazon($amazon_whale_songs_book_asin) title = BestSellerTitle.new(book).title expect(title).to eq("Best Seller: Whale Songs") end end end 11
do describe "#title" do it "prepends title with 'best seller'" do book_double = instance_double(Book, title: "Whale Songs") title = BestSellerTitle.new(book_double).title expect(title).to eq("Best Seller: Whale Songs") end end end 12
it "returns 10 published books" do books = FactoryBot.create_list(:book, 10, published: true) FactoryBot.create(:book, published: false) get :index expect(assigns[:books]).to match_array(books) end end end 13
it "returns 10 published books" do books = FactoryBot.build_stubbed_list(:book, 3) allow(Book).to receive(:latest_published).and_return(books) get :index expect(assigns[:books]).to eq(books) end end end 17
books" do books = FactoryBot.build_stubbed_list(:book, 3) allow(Book).to receive(:latest_published).and_return(books) get :index expect(assigns[:books]).to eq(books) end end end 18
books" do books = FactoryBot.build_stubbed_list(:book, 3) allow(Book).to receive(:latest_published).and_return(books) get :index expect(assigns[:books]).to eq(books) end end end 19
books" do books = FactoryBot.build_stubbed_list(:book, 3) allow(Book).to receive(:latest_published).and_return(books) get :index expect(assigns[:books]).to eq(books) end end end 20
books" do books = FactoryBot.build_stubbed_list(:book, 3) allow(Book).to receive(:latest_published).and_return(books) get :index expect(assigns[:books]).to eq(books) end end end 21
describe "#index" do it "finds the 10 latest published books" do books = FactoryBot.build_list(:book, 10) allow(Book).to receive(:limit).and_return(books) get :index expect(assigns[:books]).to eq(books) end end end 25
describe "#index" do it "finds the 10 latest published books" do books = FactoryBot.build_list(:book, 10) allow(Book).to receive(:limit).with(10).and_return(books) get :index expect(assigns[:books]).to eq(books) end end end 26
"delegates to the user" do user_double = instance_double("User", email: "[email protected]") signup = Signup.new(user: user_double) expect(signup.email).to eq(user.email) end end end 30
"verifies the user's account" do user = instance_double("User") allow(user).to receive(:verify) signup = Signup.new(user: user) signup.complete(email: "[email protected]") end end end 31
"calls verify on the user" do user = instance_double("User") allow(user).to receive(:verify) signup = Signup.new(user: user) signup.complete(email: "[email protected]") end end end 32
"calls verify on the user" do user = instance_double("User") expect(user).to receive(:verify).with(email: "[email protected]") signup = Signup.new(user: user) signup.complete(email: "[email protected]") end end end 33
"calls verify on the user" do user = instance_double("User") expect(user).to receive(:verify).with(email: "[email protected]") signup = Signup.new(user: user) signup.complete(email: "[email protected]") end end end 34
"calls verify on the user" do user = instance_double("User") expect(user).to receive(:verify).with(email: "[email protected]") signup = Signup.new(user: user) signup.complete(email: "[email protected]") end end end 35
"calls verify on the user" do user = instance_double("User") expect(user).to receive(:verify).with(email: "[email protected]") signup = Signup.new(user: user) signup.complete(email: "[email protected]") end end end 36
"calls verify on the user" do user = instance_double("User") expect(user).to receive(:verify).with(email: "[email protected]") signup = Signup.new(user: user) signup.complete(email: "[email protected]") end end end 37
verify on the user" do # Setup user = instance_double("User") signup = Signup.new(user: user) # Setup and also verification??? expect(user).to receive(:verify).with(email: [email protected]) # Exercise signup.complete(email: "[email protected]") end end end 38
"calls verify on the user" do # Setup user = instance_double("User") allow(user).to receive(:verify) signup = Signup.new(user: user) # Exercise signup.complete(email: "[email protected]") # Verify expect(user).to have_received(:verify).with(email: [email protected]) end end end 39
"calls verify on the user" do # Setup user = instance_double("User") allow(user).to receive(:verify) signup = Signup.new(user: user) # Exercise signup.complete(email: "[email protected]") # Verify expect(user).to have_received(:verify).with(email: [email protected]) end end end 40
"calls verify on the user" do # Setup user = instance_double("User") allow(user).to receive(:verify) signup = Signup.new(user: user) # Exercise signup.complete(email: "[email protected]") # Verify expect(user).to have_received(:verify).with(email: [email protected]) end end end 41
"calls verify on the user" do # Setup user = instance_double("User") allow(user).to receive(:verify) signup = Signup.new(user: user) # Exercise signup.complete(email: "[email protected]") # Verify expect(user).to have_received(:verify).with(email: [email protected]) end end end 42
Fakes - https://thoughtbot.com/upcase/videos/ stubs-mocks-spies-and-fakes The Bike Shed: Hollywood-themed tour of RSpec mocks, stubs, and spies - https://www.bikeshed.fm/270 43