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

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

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

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

Avatar for Stefan Kanev

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, т.е. проблем в дизайна… 
 …или в този случай е приемливо и тестваме в интеграция.