behavior-driven development с rspec и cucumber
TRANSCRIPT
![Page 1: Behavior-Driven Development с RSpec и Cucumber](https://reader034.vdocument.in/reader034/viewer/2022052522/554a04fdb4c905507a8b5263/html5/thumbnails/1.jpg)
Behavior-Driven Developmentс RSpec и CucumberСтефан Кънев
http://skanev.com/
27.06.2009, TechCamp.eu
Tuesday, April 27, 2010
![Page 2: Behavior-Driven Development с RSpec и Cucumber](https://reader034.vdocument.in/reader034/viewer/2022052522/554a04fdb4c905507a8b5263/html5/thumbnails/2.jpg)
Автоматизирано тестване
Tuesday, April 27, 2010
![Page 3: Behavior-Driven Development с RSpec и Cucumber](https://reader034.vdocument.in/reader034/viewer/2022052522/554a04fdb4c905507a8b5263/html5/thumbnails/3.jpg)
Unit Tests
Test-Driven Development
Behavior-Driven Development
Tuesday, April 27, 2010
![Page 4: Behavior-Driven Development с RSpec и Cucumber](https://reader034.vdocument.in/reader034/viewer/2022052522/554a04fdb4c905507a8b5263/html5/thumbnails/4.jpg)
1. Unit test-ове
2. Test-Driven
3. Behavior-Driven
4. RSpec
5. Cucumber
Tuesday, April 27, 2010
![Page 5: Behavior-Driven Development с RSpec и Cucumber](https://reader034.vdocument.in/reader034/viewer/2022052522/554a04fdb4c905507a8b5263/html5/thumbnails/5.jpg)
1. Unit test-ове
2. Test-Driven
3. Behavior-Driven
4. RSpec
5. Cucumber
Tuesday, April 27, 2010
![Page 6: Behavior-Driven Development с RSpec и Cucumber](https://reader034.vdocument.in/reader034/viewer/2022052522/554a04fdb4c905507a8b5263/html5/thumbnails/6.jpg)
class Programmer def implement_a_change(project, change) files = self.open_related_files(project, change) while true self.attempt_change(change, files) project.run() result = self.click_around_and_test(project) project.stop() break if result.successful? end self.commit_code(files) self.hope_everything_went_ok() endend
Tuesday, April 27, 2010
![Page 7: Behavior-Driven Development с RSpec и Cucumber](https://reader034.vdocument.in/reader034/viewer/2022052522/554a04fdb4c905507a8b5263/html5/thumbnails/7.jpg)
Repetitive...
Tuesday, April 27, 2010
![Page 8: Behavior-Driven Development с RSpec и Cucumber](https://reader034.vdocument.in/reader034/viewer/2022052522/554a04fdb4c905507a8b5263/html5/thumbnails/8.jpg)
...boring...
Tuesday, April 27, 2010
![Page 9: Behavior-Driven Development с RSpec и Cucumber](https://reader034.vdocument.in/reader034/viewer/2022052522/554a04fdb4c905507a8b5263/html5/thumbnails/9.jpg)
...error-prone
Tuesday, April 27, 2010
![Page 10: Behavior-Driven Development с RSpec и Cucumber](https://reader034.vdocument.in/reader034/viewer/2022052522/554a04fdb4c905507a8b5263/html5/thumbnails/10.jpg)
Машина, която да го прави вместо нас
Tuesday, April 27, 2010
![Page 11: Behavior-Driven Development с RSpec и Cucumber](https://reader034.vdocument.in/reader034/viewer/2022052522/554a04fdb4c905507a8b5263/html5/thumbnails/11.jpg)
Програма, която да го прави вместо нас
Tuesday, April 27, 2010
![Page 12: Behavior-Driven Development с RSpec и Cucumber](https://reader034.vdocument.in/reader034/viewer/2022052522/554a04fdb4c905507a8b5263/html5/thumbnails/12.jpg)
Unit Test
Tuesday, April 27, 2010
![Page 13: Behavior-Driven Development с RSpec и Cucumber](https://reader034.vdocument.in/reader034/viewer/2022052522/554a04fdb4c905507a8b5263/html5/thumbnails/13.jpg)
Пишем код, който проверява дали друг код
работи правилно.
Tuesday, April 27, 2010
![Page 14: Behavior-Driven Development с RSpec и Cucumber](https://reader034.vdocument.in/reader034/viewer/2022052522/554a04fdb4c905507a8b5263/html5/thumbnails/14.jpg)
С един бутон
Да Не
Tuesday, April 27, 2010
![Page 15: Behavior-Driven Development с RSpec и Cucumber](https://reader034.vdocument.in/reader034/viewer/2022052522/554a04fdb4c905507a8b5263/html5/thumbnails/15.jpg)
caladan:trane aquarius$ rake spec(in /work/trane)...............................................................................................................................................................................................................
Finished in 8.334414 seconds
207 examples, 0 failures
Tuesday, April 27, 2010
![Page 16: Behavior-Driven Development с RSpec и Cucumber](https://reader034.vdocument.in/reader034/viewer/2022052522/554a04fdb4c905507a8b5263/html5/thumbnails/16.jpg)
caladan:trane aquarius$ rake spec(in /work/trane).....................................................................................................................................................................................................F.........
1)'User should know something' FAILEDexpected: "something", got: "nothing" (using ==)./spec/models/user_spec.rb:32:
Finished in 8.123368 seconds
207 examples, 1 failure
Tuesday, April 27, 2010
![Page 17: Behavior-Driven Development с RSpec и Cucumber](https://reader034.vdocument.in/reader034/viewer/2022052522/554a04fdb4c905507a8b5263/html5/thumbnails/17.jpg)
I can has value?
Tuesday, April 27, 2010
![Page 18: Behavior-Driven Development с RSpec и Cucumber](https://reader034.vdocument.in/reader034/viewer/2022052522/554a04fdb4c905507a8b5263/html5/thumbnails/18.jpg)
Време
Tuesday, April 27, 2010
![Page 19: Behavior-Driven Development с RSpec и Cucumber](https://reader034.vdocument.in/reader034/viewer/2022052522/554a04fdb4c905507a8b5263/html5/thumbnails/19.jpg)
Regression testing
Tuesday, April 27, 2010
![Page 20: Behavior-Driven Development с RSpec и Cucumber](https://reader034.vdocument.in/reader034/viewer/2022052522/554a04fdb4c905507a8b5263/html5/thumbnails/20.jpg)
Tuesday, April 27, 2010
![Page 21: Behavior-Driven Development с RSpec и Cucumber](https://reader034.vdocument.in/reader034/viewer/2022052522/554a04fdb4c905507a8b5263/html5/thumbnails/21.jpg)
Tuesday, April 27, 2010
![Page 22: Behavior-Driven Development с RSpec и Cucumber](https://reader034.vdocument.in/reader034/viewer/2022052522/554a04fdb4c905507a8b5263/html5/thumbnails/22.jpg)
Tuesday, April 27, 2010
![Page 23: Behavior-Driven Development с RSpec и Cucumber](https://reader034.vdocument.in/reader034/viewer/2022052522/554a04fdb4c905507a8b5263/html5/thumbnails/23.jpg)
Tuesday, April 27, 2010
![Page 24: Behavior-Driven Development с RSpec и Cucumber](https://reader034.vdocument.in/reader034/viewer/2022052522/554a04fdb4c905507a8b5263/html5/thumbnails/24.jpg)
Документация(развален английски + стари версии = fun)
Tuesday, April 27, 2010
![Page 25: Behavior-Driven Development с RSpec и Cucumber](https://reader034.vdocument.in/reader034/viewer/2022052522/554a04fdb4c905507a8b5263/html5/thumbnails/25.jpg)
Спецификация
Tuesday, April 27, 2010
![Page 26: Behavior-Driven Development с RSpec и Cucumber](https://reader034.vdocument.in/reader034/viewer/2022052522/554a04fdb4c905507a8b5263/html5/thumbnails/26.jpg)
Tuesday, April 27, 2010
![Page 27: Behavior-Driven Development с RSpec и Cucumber](https://reader034.vdocument.in/reader034/viewer/2022052522/554a04fdb4c905507a8b5263/html5/thumbnails/27.jpg)
1. Unit test-ове
2. Test-Driven
3. Behavior-Driven
4. RSpec
5. Cucumber
Tuesday, April 27, 2010
![Page 28: Behavior-Driven Development с RSpec и Cucumber](https://reader034.vdocument.in/reader034/viewer/2022052522/554a04fdb4c905507a8b5263/html5/thumbnails/28.jpg)
Unit test-овете са просто инструмент
Tuesday, April 27, 2010
![Page 29: Behavior-Driven Development с RSpec и Cucumber](https://reader034.vdocument.in/reader034/viewer/2022052522/554a04fdb4c905507a8b5263/html5/thumbnails/29.jpg)
Test-Driven Development е подход към писането на софтуер
Tuesday, April 27, 2010
![Page 30: Behavior-Driven Development с RSpec и Cucumber](https://reader034.vdocument.in/reader034/viewer/2022052522/554a04fdb4c905507a8b5263/html5/thumbnails/30.jpg)
test-first
Tuesday, April 27, 2010
![Page 31: Behavior-Driven Development с RSpec и Cucumber](https://reader034.vdocument.in/reader034/viewer/2022052522/554a04fdb4c905507a8b5263/html5/thumbnails/31.jpg)
red/green/refactor
Tuesday, April 27, 2010
![Page 32: Behavior-Driven Development с RSpec и Cucumber](https://reader034.vdocument.in/reader034/viewer/2022052522/554a04fdb4c905507a8b5263/html5/thumbnails/32.jpg)
red/green/refactor
Възможно най-простия тест, който проверява функцио-налността и не минава.
Tuesday, April 27, 2010
![Page 33: Behavior-Driven Development с RSpec и Cucumber](https://reader034.vdocument.in/reader034/viewer/2022052522/554a04fdb4c905507a8b5263/html5/thumbnails/33.jpg)
red/green/refactor
Най-простата имплементация, която кара тестът да минава успешно.
Tuesday, April 27, 2010
![Page 34: Behavior-Driven Development с RSpec и Cucumber](https://reader034.vdocument.in/reader034/viewer/2022052522/554a04fdb4c905507a8b5263/html5/thumbnails/34.jpg)
red/green/refactor
Отстраняване на повторения, докато кодът не стане достатъчно качествен.
Tuesday, April 27, 2010
![Page 35: Behavior-Driven Development с RSpec и Cucumber](https://reader034.vdocument.in/reader034/viewer/2022052522/554a04fdb4c905507a8b5263/html5/thumbnails/35.jpg)
Tuesday, April 27, 2010
![Page 36: Behavior-Driven Development с RSpec и Cucumber](https://reader034.vdocument.in/reader034/viewer/2022052522/554a04fdb4c905507a8b5263/html5/thumbnails/36.jpg)
малки стъпки
Tuesday, April 27, 2010
![Page 37: Behavior-Driven Development с RSpec и Cucumber](https://reader034.vdocument.in/reader034/viewer/2022052522/554a04fdb4c905507a8b5263/html5/thumbnails/37.jpg)
Test-Driven Design
Tuesday, April 27, 2010
![Page 38: Behavior-Driven Development с RSpec и Cucumber](https://reader034.vdocument.in/reader034/viewer/2022052522/554a04fdb4c905507a8b5263/html5/thumbnails/38.jpg)
Преизползваемост
Tuesday, April 27, 2010
![Page 39: Behavior-Driven Development с RSpec и Cucumber](https://reader034.vdocument.in/reader034/viewer/2022052522/554a04fdb4c905507a8b5263/html5/thumbnails/39.jpg)
Low coupling
Tuesday, April 27, 2010
![Page 40: Behavior-Driven Development с RSpec и Cucumber](https://reader034.vdocument.in/reader034/viewer/2022052522/554a04fdb4c905507a8b5263/html5/thumbnails/40.jpg)
Добър интерфейс
Tuesday, April 27, 2010
![Page 41: Behavior-Driven Development с RSpec и Cucumber](https://reader034.vdocument.in/reader034/viewer/2022052522/554a04fdb4c905507a8b5263/html5/thumbnails/41.jpg)
scope creep
Tuesday, April 27, 2010
![Page 42: Behavior-Driven Development с RSpec и Cucumber](https://reader034.vdocument.in/reader034/viewer/2022052522/554a04fdb4c905507a8b5263/html5/thumbnails/42.jpg)
up-front design
Tuesday, April 27, 2010
![Page 43: Behavior-Driven Development с RSpec и Cucumber](https://reader034.vdocument.in/reader034/viewer/2022052522/554a04fdb4c905507a8b5263/html5/thumbnails/43.jpg)
1. Unit test-ове
2. Test-Driven
3. Behavior-Driven
4. RSpec
5. Cucumber
Tuesday, April 27, 2010
![Page 44: Behavior-Driven Development с RSpec и Cucumber](https://reader034.vdocument.in/reader034/viewer/2022052522/554a04fdb4c905507a8b5263/html5/thumbnails/44.jpg)
Test-Driven Development is not about testing
Tuesday, April 27, 2010
![Page 45: Behavior-Driven Development с RSpec и Cucumber](https://reader034.vdocument.in/reader034/viewer/2022052522/554a04fdb4c905507a8b5263/html5/thumbnails/45.jpg)
TDD ≠ QA
Tuesday, April 27, 2010
![Page 46: Behavior-Driven Development с RSpec и Cucumber](https://reader034.vdocument.in/reader034/viewer/2022052522/554a04fdb4c905507a8b5263/html5/thumbnails/46.jpg)
Опитните TDD-ри използват процеса за да открият поведението, което системата трябва
да има.
Tuesday, April 27, 2010
![Page 47: Behavior-Driven Development с RSpec и Cucumber](https://reader034.vdocument.in/reader034/viewer/2022052522/554a04fdb4c905507a8b5263/html5/thumbnails/47.jpg)
Behavior-Driven Development
Tuesday, April 27, 2010
![Page 48: Behavior-Driven Development с RSpec и Cucumber](https://reader034.vdocument.in/reader034/viewer/2022052522/554a04fdb4c905507a8b5263/html5/thumbnails/48.jpg)
BDD ≈ TDD++
Tuesday, April 27, 2010
![Page 49: Behavior-Driven Development с RSpec и Cucumber](https://reader034.vdocument.in/reader034/viewer/2022052522/554a04fdb4c905507a8b5263/html5/thumbnails/49.jpg)
"Getting the words right"
Tuesday, April 27, 2010
![Page 50: Behavior-Driven Development с RSpec и Cucumber](https://reader034.vdocument.in/reader034/viewer/2022052522/554a04fdb4c905507a8b5263/html5/thumbnails/50.jpg)
Test-Driven ⇒ Behavior-Driven
Tuesday, April 27, 2010
![Page 51: Behavior-Driven Development с RSpec и Cucumber](https://reader034.vdocument.in/reader034/viewer/2022052522/554a04fdb4c905507a8b5263/html5/thumbnails/51.jpg)
Assertion ⇒ Expectation
Tuesday, April 27, 2010
![Page 52: Behavior-Driven Development с RSpec и Cucumber](https://reader034.vdocument.in/reader034/viewer/2022052522/554a04fdb4c905507a8b5263/html5/thumbnails/52.jpg)
Test Method ⇒Code Example
Tuesday, April 27, 2010
![Page 53: Behavior-Driven Development с RSpec и Cucumber](https://reader034.vdocument.in/reader034/viewer/2022052522/554a04fdb4c905507a8b5263/html5/thumbnails/53.jpg)
Test Case ⇒ Example Group
Tuesday, April 27, 2010
![Page 54: Behavior-Driven Development с RSpec и Cucumber](https://reader034.vdocument.in/reader034/viewer/2022052522/554a04fdb4c905507a8b5263/html5/thumbnails/54.jpg)
Domain-Driven Design
Tuesday, April 27, 2010
![Page 55: Behavior-Driven Development с RSpec и Cucumber](https://reader034.vdocument.in/reader034/viewer/2022052522/554a04fdb4c905507a8b5263/html5/thumbnails/55.jpg)
Eric Evans
Domain Driven Design
Tuesday, April 27, 2010
![Page 56: Behavior-Driven Development с RSpec и Cucumber](https://reader034.vdocument.in/reader034/viewer/2022052522/554a04fdb4c905507a8b5263/html5/thumbnails/56.jpg)
Близки до проблемната област думи
Tuesday, April 27, 2010
![Page 57: Behavior-Driven Development с RSpec и Cucumber](https://reader034.vdocument.in/reader034/viewer/2022052522/554a04fdb4c905507a8b5263/html5/thumbnails/57.jpg)
Разбираем за бизнеса език
Tuesday, April 27, 2010
![Page 58: Behavior-Driven Development с RSpec и Cucumber](https://reader034.vdocument.in/reader034/viewer/2022052522/554a04fdb4c905507a8b5263/html5/thumbnails/58.jpg)
BDD = TDD + DDD(TLA FTW)
Tuesday, April 27, 2010
![Page 59: Behavior-Driven Development с RSpec и Cucumber](https://reader034.vdocument.in/reader034/viewer/2022052522/554a04fdb4c905507a8b5263/html5/thumbnails/59.jpg)
Tuesday, April 27, 2010
![Page 60: Behavior-Driven Development с RSpec и Cucumber](https://reader034.vdocument.in/reader034/viewer/2022052522/554a04fdb4c905507a8b5263/html5/thumbnails/60.jpg)
BDD = TDD + DDD
Tuesday, April 27, 2010
![Page 61: Behavior-Driven Development с RSpec и Cucumber](https://reader034.vdocument.in/reader034/viewer/2022052522/554a04fdb4c905507a8b5263/html5/thumbnails/61.jpg)
BDD = TDD + DDD
BDD = (T + D)DD
Tuesday, April 27, 2010
![Page 62: Behavior-Driven Development с RSpec и Cucumber](https://reader034.vdocument.in/reader034/viewer/2022052522/554a04fdb4c905507a8b5263/html5/thumbnails/62.jpg)
BDD = TDD + DDD
BDD = (T + D)DD
B = T + D
Tuesday, April 27, 2010
![Page 63: Behavior-Driven Development с RSpec и Cucumber](https://reader034.vdocument.in/reader034/viewer/2022052522/554a04fdb4c905507a8b5263/html5/thumbnails/63.jpg)
BDD = TDD + DDD
BDD = (T + D)DD
B = T + D
интензитет = време + доза
Tuesday, April 27, 2010
![Page 64: Behavior-Driven Development с RSpec и Cucumber](https://reader034.vdocument.in/reader034/viewer/2022052522/554a04fdb4c905507a8b5263/html5/thumbnails/64.jpg)
1. Unit test-ове
2. Test-Driven
3. Behavior-Driven
4. RSpec
5. Cucumber
Tuesday, April 27, 2010
![Page 65: Behavior-Driven Development с RSpec и Cucumber](https://reader034.vdocument.in/reader034/viewer/2022052522/554a04fdb4c905507a8b5263/html5/thumbnails/65.jpg)
Друг "синтаксис"
Tuesday, April 27, 2010
![Page 66: Behavior-Driven Development с RSpec и Cucumber](https://reader034.vdocument.in/reader034/viewer/2022052522/554a04fdb4c905507a8b5263/html5/thumbnails/66.jpg)
xUnit assert_equal 42, answer
Друг "синтаксис"
Tuesday, April 27, 2010
![Page 67: Behavior-Driven Development с RSpec и Cucumber](https://reader034.vdocument.in/reader034/viewer/2022052522/554a04fdb4c905507a8b5263/html5/thumbnails/67.jpg)
xUnit assert_equal 42, answer
RSpec answer.should equal(42)
Друг "синтаксис"
Tuesday, April 27, 2010
![Page 68: Behavior-Driven Development с RSpec и Cucumber](https://reader034.vdocument.in/reader034/viewer/2022052522/554a04fdb4c905507a8b5263/html5/thumbnails/68.jpg)
xUnit assert_equal 42, answer
RSpec answer.should equal(42)
English Answer should equal 42
Друг "синтаксис"
Tuesday, April 27, 2010
![Page 69: Behavior-Driven Development с RSpec и Cucumber](https://reader034.vdocument.in/reader034/viewer/2022052522/554a04fdb4c905507a8b5263/html5/thumbnails/69.jpg)
Tuesday, April 27, 2010
![Page 70: Behavior-Driven Development с RSpec и Cucumber](https://reader034.vdocument.in/reader034/viewer/2022052522/554a04fdb4c905507a8b5263/html5/thumbnails/70.jpg)
assert_equal 42, result
Tuesday, April 27, 2010
![Page 71: Behavior-Driven Development с RSpec и Cucumber](https://reader034.vdocument.in/reader034/viewer/2022052522/554a04fdb4c905507a8b5263/html5/thumbnails/71.jpg)
assert_equal 42, result result.should == 42
Tuesday, April 27, 2010
![Page 72: Behavior-Driven Development с RSpec и Cucumber](https://reader034.vdocument.in/reader034/viewer/2022052522/554a04fdb4c905507a8b5263/html5/thumbnails/72.jpg)
assert_equal 42, result result.should == 42assert result.nil?
Tuesday, April 27, 2010
![Page 73: Behavior-Driven Development с RSpec и Cucumber](https://reader034.vdocument.in/reader034/viewer/2022052522/554a04fdb4c905507a8b5263/html5/thumbnails/73.jpg)
assert_equal 42, result result.should == 42assert result.nil? result.should be_nil
Tuesday, April 27, 2010
![Page 74: Behavior-Driven Development с RSpec и Cucumber](https://reader034.vdocument.in/reader034/viewer/2022052522/554a04fdb4c905507a8b5263/html5/thumbnails/74.jpg)
assert_equal 42, result result.should == 42assert result.nil? result.should be_nilassert result.kind_of?(User)
Tuesday, April 27, 2010
![Page 75: Behavior-Driven Development с RSpec и Cucumber](https://reader034.vdocument.in/reader034/viewer/2022052522/554a04fdb4c905507a8b5263/html5/thumbnails/75.jpg)
assert_equal 42, result result.should == 42assert result.nil? result.should be_nilassert result.kind_of?(User) result.should be_kind_of(User)
Tuesday, April 27, 2010
![Page 76: Behavior-Driven Development с RSpec и Cucumber](https://reader034.vdocument.in/reader034/viewer/2022052522/554a04fdb4c905507a8b5263/html5/thumbnails/76.jpg)
assert_equal 42, result result.should == 42assert result.nil? result.should be_nilassert result.kind_of?(User) result.should be_kind_of(User)assert [], blog.posts
Tuesday, April 27, 2010
![Page 77: Behavior-Driven Development с RSpec и Cucumber](https://reader034.vdocument.in/reader034/viewer/2022052522/554a04fdb4c905507a8b5263/html5/thumbnails/77.jpg)
assert_equal 42, result result.should == 42assert result.nil? result.should be_nilassert result.kind_of?(User) result.should be_kind_of(User)assert [], blog.posts blog.should have(:no).posts
Tuesday, April 27, 2010
![Page 78: Behavior-Driven Development с RSpec и Cucumber](https://reader034.vdocument.in/reader034/viewer/2022052522/554a04fdb4c905507a8b5263/html5/thumbnails/78.jpg)
assert_equal 42, result result.should == 42assert result.nil? result.should be_nilassert result.kind_of?(User) result.should be_kind_of(User)assert [], blog.posts blog.should have(:no).postsassert 5, blog.posts.size
Tuesday, April 27, 2010
![Page 79: Behavior-Driven Development с RSpec и Cucumber](https://reader034.vdocument.in/reader034/viewer/2022052522/554a04fdb4c905507a8b5263/html5/thumbnails/79.jpg)
assert_equal 42, result result.should == 42assert result.nil? result.should be_nilassert result.kind_of?(User) result.should be_kind_of(User)assert [], blog.posts blog.should have(:no).postsassert 5, blog.posts.size blog.should have(5).posts
Tuesday, April 27, 2010
![Page 80: Behavior-Driven Development с RSpec и Cucumber](https://reader034.vdocument.in/reader034/viewer/2022052522/554a04fdb4c905507a8b5263/html5/thumbnails/80.jpg)
Tuesday, April 27, 2010
![Page 81: Behavior-Driven Development с RSpec и Cucumber](https://reader034.vdocument.in/reader034/viewer/2022052522/554a04fdb4c905507a8b5263/html5/thumbnails/81.jpg)
assert_raise(InvalidRecord) do user.save!end
Tuesday, April 27, 2010
![Page 82: Behavior-Driven Development с RSpec и Cucumber](https://reader034.vdocument.in/reader034/viewer/2022052522/554a04fdb4c905507a8b5263/html5/thumbnails/82.jpg)
assert_raise(InvalidRecord) do user.save!end
lambda { user.save! }.should raise_error(InvalidRecord)
Tuesday, April 27, 2010
![Page 83: Behavior-Driven Development с RSpec и Cucumber](https://reader034.vdocument.in/reader034/viewer/2022052522/554a04fdb4c905507a8b5263/html5/thumbnails/83.jpg)
assert_raise(InvalidRecord) do user.save!end
lambda { user.save! }.should raise_error(InvalidRecord)
assert_difference "User.count", 1 do user.create!end
Tuesday, April 27, 2010
![Page 84: Behavior-Driven Development с RSpec и Cucumber](https://reader034.vdocument.in/reader034/viewer/2022052522/554a04fdb4c905507a8b5263/html5/thumbnails/84.jpg)
assert_raise(InvalidRecord) do user.save!end
lambda { user.save! }.should raise_error(InvalidRecord)
assert_difference "User.count", 1 do user.create!end
lambda { user.save! }.should change { User.count }.by(1)
Tuesday, April 27, 2010
![Page 85: Behavior-Driven Development с RSpec и Cucumber](https://reader034.vdocument.in/reader034/viewer/2022052522/554a04fdb4c905507a8b5263/html5/thumbnails/85.jpg)
class Stack < Test::Unit::TestCase def set_up() @stack = Stack.new end def test_empty assert @stack.empty? @stack.push 42 assert [email protected]? end def test_pop @stack.push 42 @stack.push 5 assert_equal 5, @stack.pop assert_equal 42, @stack.pop asser_raise(StackEmptyError) { @stack.pop } endend
Tuesday, April 27, 2010
![Page 86: Behavior-Driven Development с RSpec и Cucumber](https://reader034.vdocument.in/reader034/viewer/2022052522/554a04fdb4c905507a8b5263/html5/thumbnails/86.jpg)
describe Stack do before(:each) do @stack = Stack.new end it "should be able to tell whether it is empty" do @stack.should be_empty @stack.push 42 @stack.should_not be_empty? end it "should pop the items in reverse order" do @stack.push 42 @stack.push 5 @stack.pop.should == 5 @stack.pop.should == 42 lambda { @stack.pop }.should raise_error(StackEmptyError) endend
Tuesday, April 27, 2010
![Page 87: Behavior-Driven Development с RSpec и Cucumber](https://reader034.vdocument.in/reader034/viewer/2022052522/554a04fdb4c905507a8b5263/html5/thumbnails/87.jpg)
describe Stack do context "(empty stack)" do it "should be empty" it "#pop should raise an exception" end context "(non-empty stack)" do it "should not be empty" it "#pop should return the top element" it "#pop should remove the top element" endend
Tuesday, April 27, 2010
![Page 88: Behavior-Driven Development с RSpec и Cucumber](https://reader034.vdocument.in/reader034/viewer/2022052522/554a04fdb4c905507a8b5263/html5/thumbnails/88.jpg)
Tuesday, April 27, 2010
![Page 89: Behavior-Driven Development с RSpec и Cucumber](https://reader034.vdocument.in/reader034/viewer/2022052522/554a04fdb4c905507a8b5263/html5/thumbnails/89.jpg)
1. Unit test-ове
2. Test-Driven
3. Behavior-Driven
4. RSpec
5. Cucumber
Tuesday, April 27, 2010
![Page 90: Behavior-Driven Development с RSpec и Cucumber](https://reader034.vdocument.in/reader034/viewer/2022052522/554a04fdb4c905507a8b5263/html5/thumbnails/90.jpg)
Feature: Manage posts In order to be able to spread wisdom the blogger wants to be able to write about anything he wants Scenario: Writing a new post Given that there are no posts And I am logged in When I go to the new post page And I fill "Title" with "F1rst p0st" And I fill "Content" with "This is my first post" And I press "Publish" Then I should be on the front page And I should see "This is my first post" And there should be a new post called "F1rst p0st"
Tuesday, April 27, 2010
![Page 91: Behavior-Driven Development с RSpec и Cucumber](https://reader034.vdocument.in/reader034/viewer/2022052522/554a04fdb4c905507a8b5263/html5/thumbnails/91.jpg)
Given /^I am logged in$/ doend
When /^I go to (.*?)$/ do |page|end
When /^I fill "([^\"]*)" with "([^\"]*)"$/ do |field, content|end
When /^I press "([^\"]*)"$/ do |button_name|end
Then /^I should be on (.*?)$/ do |page|end
Then /^I should see "([^\"]*)"$/ do |text1|end
Then /^there should be a new post called "([^\"]*)"$/ do |name|end
Tuesday, April 27, 2010
![Page 92: Behavior-Driven Development с RSpec и Cucumber](https://reader034.vdocument.in/reader034/viewer/2022052522/554a04fdb4c905507a8b5263/html5/thumbnails/92.jpg)
Tuesday, April 27, 2010