Upgrade to Pro — share decks privately, control downloads, hide ads and more …

За смъртта на TDD

За смъртта на TDD

Презентацията от PlovdivConf 2014

Stefan Kanev

May 17, 2014
Tweet

More Decks by Stefan Kanev

Other Decks in Programming

Transcript

  1. 1. test-first vs. test-after 2. hexagonal architecture 3. mocking &

    isolation 4. валидните притеснения План 1. 2. 3. 4.
  2. 1. Зареди си кода 2. Изтрий всичко от базата 3.

    Добави в една таблица 4. Добави в другата 5. Свържи ги Създай .rb файл, в който:
  3. Кога не правя test-first:
 1. Когато не пиша тестове 2.

    Когато не съм много неуверен в интерфейса
  4. class EmployeesController < ApplicationController! def create! @employee = Employee.new(params[:employee])! !

    if @employee.save! redirect_to @employee, notice: "#{@employee.name} created"! else! render :new! end! end! end!
  5. class EmployeesController < ApplicationController! def create! CreateEmployee.run(params[:employee], {! success: ->

    (employee) {! redirect_to employee, notice: “#{employee.name} created"! },! failure: -> (employee) {! @employee = employee! render :new! }! })! end! end
  6. Controller Model Database 1. Създай потребител 2. Извикай контролера 3.

    Провери новото име в базата без mock-ове
  7. Controller Model с mock-ове user = mock('User')! 
 User.stub find:

    user! 
 user.should_receive(:update)
 .with(name: 'Jon')! 
 
 
 post :create, name: ‘Jon'!
  8. if {! if {! if {! ...! } else {!

    if {! if {! ...! } else {! ...! }! }! }! } else {! ...! }! } else {! ...! }
  9. Опитните mockist-и приемат това като симптом. 
 Или има твърде

    много coupling, т.е. проблем в дизайна… 
 …или в този случай е приемливо и тестваме в интеграция.