Sha256: cc672b7ed8738ad6e61267b0170d4311d5fbd483dc1614f2b30535910477f93a
Contents?: true
Size: 1.89 KB
Versions: 4
Compression:
Stored size: 1.89 KB
Contents
Feature: Contract tests with spies Whenever you spy on method invocations, it creates a contract specifying that some method can be called with a particular set of arguments. It can be automatically verified by Bogus, whether the method was actually called with those arguments. Background: Given a file named "library.rb" with: """ruby class Library def checkout(book) end end """ Given a file named "student.rb" with: """ruby class Student def read(book, library = Library.new) library.checkout(book) # ... end end """ And a spec file named "student_spec.rb" with: """ruby require_relative 'student' require_relative 'library' describe Student do fake(:library) it "reads books from library" do student = Student.new student.read("Moby Dick", library) library.should have_received.checkout("Moby Dick") end end """ Scenario: Stubbing methods that exist on real object Then spec file with following content should pass: """ruby require_relative 'library' describe Library do verify_contract(:library) it "checks out books" do library = Library.new library.checkout("Moby Dick") # ... end end """ Scenario: Verifing that stubbed methods are tested Then spec file with following content should fail: """ruby require_relative 'library' describe Library do verify_contract(:library) end """ Scenario: Verifying that methods are tested with right arguments Then spec file with following content should fail: """ruby require_relative 'library' describe Library do verify_contract(:library) it "checks out books" do library = Library.new library.checkout("Moby Dick 2: The ulitmate") # ... end end """
Version data entries
4 entries across 4 versions & 1 rubygems