expect(RSpec::3).to be_coming_soon @Dius_AU September 2013

D79fc498d7a5b2ce12180890247476f0?s=47 Jon Rowe
September 12, 2013

expect(RSpec::3).to be_coming_soon @Dius_AU September 2013

Repeat of my RSpec 3 talk given to DiusAU

D79fc498d7a5b2ce12180890247476f0?s=128

Jon Rowe

September 12, 2013
Tweet

Transcript

  1. .*...........*.*...................................................*..............*...............*..... ...........F....................*...........*.............*.*...........*...........F.*..............F. ..........FF...........**...........*...........**...........*.*..........................*........... *.*...................................................*..............*...............*................F.. ..................*...........*.............*.*...........*...........F.*..............F...........FF. ..........**...........*...........**...........*.*..........................*...........*.*.......... .........................................*..............*...............*................F................ ....*...........*.............*.*...........*...........F.*..............F...........FF...........** ...........*...........**...........*.*..........................*...........*.*....................... ............................*..............*...............*................F....................*.......

    ....*.............*.*...........*...........F.*..............F...........FF...........**...........* ...........**...........*.*..........................*...........*.*.................................... ...............*..............*...............*................F....................*...........*........ .....*.*...........*...........F.*..............F...........FF...........**...........*...........** ...........*.*..........................*...........*.*.................................................. .*..............*...............*................F....................*...........*.............*.*.... .......*...........F.*..............F...........FF...........**...........*...........**...........* .*..........................*...........*.*...................................................*.......... ....*...............*................F....................*...........*.............*.*...........*.... .......F.*..............F...........FF...........**...........*...........**...........*.*.......... ................*...........*.*...................................................*..............*....... ........*................F....................*...........*.............*.*...........*...........F.*.. ............F...........FF...........**...........*...........**...........*.*........................ ..*...........*.*...................................................*..............*...............*.... ............F....................*...........*.............*.*...........*...........F.*.............. F...........FF...........**...........*...........**...........*.*..........................*........ ...*.*...................................................*..............*...............*................ F....................*...........*.............*.*...........*...........F.*..............F........... FF...........**...........*...........**...........*.*..........................*...........*.*..... ..............................................*..............*...............*................F........... .........*...........*.............*.*...........*...........F.*..............F...........FF.......... .**...........*...........**...........*.*..........................*...........*.*................... ................................*..............*...............*................F....................*... ........*.............*.*...........*...........F.*..............F...........FF...........**......... expect(RSpec::3).to be_coming_soon JON ROWE Thursday, 12 September 13
  2. RSPEC Thursday, 12 September 13

  3. RSPEC Released 0.x. 2005 Thursday, 12 September 13

  4. RSPEC Released 0.x. 2005 Released 1.x. 2007 Thursday, 12 September

    13
  5. RSPEC Released 0.x. 2005 Released 1.x. 2007 Released 2.x 2010

    Thursday, 12 September 13
  6. RSPEC 2.x Thursday, 12 September 13

  7. RSPEC 2.x 85 Contributors Thursday, 12 September 13

  8. RSPEC 2.x 85 Contributors Modularisation Thursday, 12 September 13

  9. RSPEC 2.x 85 Contributors Modularisation Filters, Meta Data Thursday, 12

    September 13
  10. RSPEC 2.x 85 Contributors Modularisation Filters, Meta Data Rails 3

    Thursday, 12 September 13
  11. Thursday, 12 September 13

  12. 365 Contributors Thursday, 12 September 13

  13. 365 Contributors >12340 Commits Thursday, 12 September 13

  14. 365 Contributors >12340 Commits > 14800 LOC Thursday, 12 September

    13
  15. .*...........*.*...................................................*..............*...............*..... ...........F....................*...........*.............*.*...........*...........F.*..............F. ..........FF...........**...........*...........**...........*.*..........................*........... *.*...................................................*..............*...............*................F.. ..................*...........*.............*.*...........*...........F.*..............F...........FF. ..........**...........*...........**...........*.*..........................*...........*.*.......... .........................................*..............*...............*................F................ ....*...........*.............*.*...........*...........F.*..............F...........FF...........** ...........*...........**...........*.*..........................*...........*.*....................... ............................*..............*...............*................F....................*.......

    ....*.............*.*...........*...........F.*..............F...........FF...........**...........* ...........**...........*.*..........................*...........*.*.................................... ...............*..............*...............*................F....................*...........*........ .....*.*...........*...........F.*..............F...........FF...........**...........*...........** ...........*.*..........................*...........*.*.................................................. .*..............*...............*................F....................*...........*.............*.*.... .......*...........F.*..............F...........FF...........**...........*...........**...........* .*..........................*...........*.*...................................................*.......... ....*...............*................F....................*...........*.............*.*...........*.... .......F.*..............F...........FF...........**...........*...........**...........*.*.......... ................*...........*.*...................................................*..............*....... ........*................F....................*...........*.............*.*...........*...........F.*.. ............F...........FF...........**...........*...........**...........*.*........................ ..*...........*.*...................................................*..............*...............*.... ............F....................*...........*.............*.*...........*...........F.*.............. F...........FF...........**...........*...........**...........*.*..........................*........ ...*.*...................................................*..............*...............*................ F....................*...........*.............*.*...........*...........F.*..............F........... FF...........**...........*...........**...........*.*..........................*...........*.*..... ..............................................*..............*...............*................F........... .........*...........*.............*.*...........*...........F.*..............F...........FF.......... .**...........*...........**...........*.*..........................*...........*.*................... ................................*..............*...............*................F....................*... ........*.............*.*...........*...........F.*..............F...........FF...........**......... RSPEC 3 Thursday, 12 September 13
  16. SEMVER Thursday, 12 September 13

  17. SEMVER Major Release Thursday, 12 September 13

  18. SEMVER Major Release Breaking Changes Thursday, 12 September 13

  19. SEMVER Major Release Breaking Changes Cleanup deprecations Thursday, 12 September

    13
  20. SEMVER Major Release Breaking Changes Cleanup deprecations Changed supported Rubies

    Thursday, 12 September 13
  21. RUBY Thursday, 12 September 13

  22. RUBY 1.8.6 Thursday, 12 September 13

  23. RUBY 1.8.6 1.8.7 Thursday, 12 September 13

  24. RUBY 1.8.6 1.8.7 1.9.1 Thursday, 12 September 13

  25. RUBY 1.8.6 1.8.7 1.9.1 1.9.2 Thursday, 12 September 13

  26. RUBY 1.8.6 1.8.7 1.9.1 1.9.2 1.9.3 Thursday, 12 September 13

  27. RUBY 1.8.6 1.8.7 1.9.1 1.9.2 1.9.3 2.0.0 Thursday, 12 September

    13
  28. RUBY 1.8.6 1.8.7 1.9.1 1.9.2 1.9.3 2.0.0 REE Thursday, 12

    September 13
  29. RUBY 1.8.6 1.8.7 1.9.1 1.9.2 1.9.3 2.0.0 REE JRuby 1.8

    Thursday, 12 September 13
  30. RUBY 1.8.6 1.8.7 1.9.1 1.9.2 1.9.3 2.0.0 REE JRuby 1.8

    JRuby 1.9 Thursday, 12 September 13
  31. RUBY 1.8.6 1.8.7 1.9.1 1.9.2 1.9.3 2.0.0 REE JRuby 1.8

    JRuby 1.9 ~RBX 1.8 Thursday, 12 September 13
  32. RUBY 1.8.6 1.8.7 1.9.1 1.9.2 1.9.3 2.0.0 REE JRuby 1.8

    JRuby 1.9 ~RBX 1.8 ~RBX 1.9 Thursday, 12 September 13
  33. RUBY 1.8.7 1.9.2 1.9.3 2.0.0 REE JRuby 1.8 JRuby 1.9

    ~RBX 1.8 ~RBX 1.9 Thursday, 12 September 13
  34. Cleanup Thursday, 12 September 13

  35. Cleanup Removal of string evals Thursday, 12 September 13

  36. Cleanup Removal of string evals Removal of workarounds for 1.8.6

    Thursday, 12 September 13
  37. Cleanup Removal of string evals Removal of workarounds for 1.8.6

    Remove Deprecations Thursday, 12 September 13
  38. Cleanup Removal of string evals Removal of workarounds for 1.8.6

    Remove Deprecations Extract Gems Thursday, 12 September 13
  39. Deprecations Thursday, 12 September 13

  40. Deprecations Spec Thursday, 12 September 13

  41. Deprecations Spec stub! / unstub! Thursday, 12 September 13

  42. Deprecations Spec stub! / unstub! mock / stub Thursday, 12

    September 13
  43. Deprecations Spec stub! / unstub! mock / stub at_least(0) /

    any_number_of times Thursday, 12 September 13
  44. Deprecations Spec stub! / unstub! mock / stub at_least(0) /

    any_number_of times let/subject in before(:all) Thursday, 12 September 13
  45. Deprecations Spec stub! / unstub! mock / stub at_least(0) /

    any_number_of times let/subject in before(:all) should_not_receive(...).and_return Thursday, 12 September 13
  46. Extract Gems Thursday, 12 September 13

  47. Extract Gems autotest Thursday, 12 September 13

  48. Extract Gems autotest rcov Thursday, 12 September 13

  49. Extract Gems autotest rcov TextMate formatter Thursday, 12 September 13

  50. Extract Gems autotest rcov TextMate formatter its Thursday, 12 September

    13
  51. Extract Gems autotest rcov TextMate formatter its collection_matchers Thursday, 12

    September 13
  52. Changes Thursday, 12 September 13

  53. Changes New reporter / formatter API Thursday, 12 September 13

  54. Changes New reporter / formatter API New shared_examples behaviour Thursday,

    12 September 13
  55. Changes New reporter / formatter API New shared_examples behaviour Block

    based DSL yield example Thursday, 12 September 13
  56. Changes New reporter / formatter API New shared_examples behaviour Block

    based DSL yield example Verifying doubles Thursday, 12 September 13
  57. Reporter API Thursday, 12 September 13

  58. Reporter API Breaking change Thursday, 12 September 13

  59. Reporter API Breaking change Event / subscription based Thursday, 12

    September 13
  60. Reporter API Breaking change Event / subscription based Message Objects

    Thursday, 12 September 13
  61. shared_examples Thursday, 12 September 13

  62. shared_examples Currently shared examples are global Thursday, 12 September 13

  63. shared_examples Currently shared examples are global Change to defined in

    context Thursday, 12 September 13
  64. shared_examples Currently shared examples are global Change to defined in

    context Cross nesting won’t be possible Thursday, 12 September 13
  65. DSL yields example Thursday, 12 September 13

  66. DSL yields example Remove access to #example it { example

    } => NoMethodError Thursday, 12 September 13
  67. DSL yields example Remove access to #example it { example

    } => NoMethodError Changing to yielded to block it { |example| ... } let(:thing) { |example| ... } Thursday, 12 September 13
  68. Verifying Doubles Thursday, 12 September 13

  69. Verifying Doubles Ported from rspec-fire (@xaviershay) Thursday, 12 September 13

  70. Verifying Doubles Ported from rspec-fire (@xaviershay) Behave as normal in

    isolation Thursday, 12 September 13
  71. Verifying Doubles Ported from rspec-fire (@xaviershay) Behave as normal in

    isolation Verify method signature when loaded Thursday, 12 September 13
  72. Verifying Doubles Ported from rspec-fire (@xaviershay) Behave as normal in

    isolation Verify method signature when loaded instance_double / class_double Thursday, 12 September 13
  73. Verifying Doubles Ported from rspec-fire (@xaviershay) Behave as normal in

    isolation Verify method signature when loaded instance_double / class_double as_stubbed_const Thursday, 12 September 13
  74. .*...........*.*...................................................*..............*...............*..... ...........F....................*...........*.............*.*...........*...........F.*..............F. ..........FF...........**...........*...........**...........*.*..........................*........... *.*...................................................*..............*...............*................F.. ..................*...........*.............*.*...........*...........F.*..............F...........FF. ..........**...........*...........**...........*.*..........................*...........*.*.......... .........................................*..............*...............*................F................ ....*...........*.............*.*...........*...........F.*..............F...........FF...........** ...........*...........**...........*.*..........................*...........*.*....................... ............................*..............*...............*................F....................*.......

    ....*.............*.*...........*...........F.*..............F...........FF...........**...........* ...........**...........*.*..........................*...........*.*.................................... ...............*..............*...............*................F....................*...........*........ .....*.*...........*...........F.*..............F...........FF...........**...........*...........** ...........*.*..........................*...........*.*.................................................. .*..............*...............*................F....................*...........*.............*.*.... .......*...........F.*..............F...........FF...........**...........*...........**...........* .*..........................*...........*.*...................................................*.......... ....*...............*................F....................*...........*.............*.*...........*.... .......F.*..............F...........FF...........**...........*...........**...........*.*.......... ................*...........*.*...................................................*..............*....... ........*................F....................*...........*.............*.*...........*...........F.*.. ............F...........FF...........**...........*...........**...........*.*........................ ..*...........*.*...................................................*..............*...............*.... ............F....................*...........*.............*.*...........*...........F.*.............. F...........FF...........**...........*...........**...........*.*..........................*........ ...*.*...................................................*..............*...............*................ F....................*...........*.............*.*...........*...........F.*..............F........... FF...........**...........*...........**...........*.*..........................*...........*.*..... ..............................................*..............*...............*................F........... .........*...........*.............*.*...........*...........F.*..............F...........FF.......... .**...........*...........**...........*.*..........................*...........*.*................... ................................*..............*...............*................F....................*... ........*.............*.*...........*...........F.*..............F...........FF...........**......... expect(monkey_patches). to be_close_to 0 Thursday, 12 September 13
  75. Monkey Patching Thursday, 12 September 13

  76. Monkey Patching Causes problems with conflicts Thursday, 12 September 13

  77. Monkey Patching Causes problems with conflicts Causes problems with internal

    state Thursday, 12 September 13
  78. Monkey Patching Causes problems with conflicts Causes problems with internal

    state Clobbered by other monkeys Thursday, 12 September 13
  79. expect syntax object.should matcher(result) object.should_not matcher(result) expect(object).to matcher(result) expect(object).to_not matcher(result)

    Thursday, 12 September 13
  80. expect syntax object.should_receive(:message) object.should_not_receive(:message) expect(object).to receive(:message) expect(object).to_not receive(:message) Thursday, 12

    September 13
  81. Expect Syntax Thursday, 12 September 13

  82. Expect Syntax The preferred syntax going forward Thursday, 12 September

    13
  83. Expect Syntax The preferred syntax going forward Potentially only syntax

    by default Thursday, 12 September 13
  84. describe RSpec.describe do it “should not be monkey patchin’” do

    expect(monkey_patches).to be_close_to 0 end end Thursday, 12 September 13
  85. More Changes Thursday, 12 September 13

  86. More Changes be_truthy / be_falsey Thursday, 12 September 13

  87. More Changes be_truthy / be_falsey receive_messages( msg: “val”, ... )

    Thursday, 12 September 13
  88. More Changes be_truthy / be_falsey receive_messages( msg: “val”, ... )

    No more integrated --debugger Thursday, 12 September 13
  89. More Changes be_truthy / be_falsey receive_messages( msg: “val”, ... )

    No more integrated --debugger New --dry-run mode Thursday, 12 September 13
  90. More Changes be_truthy / be_falsey receive_messages( msg: “val”, ... )

    No more integrated --debugger New --dry-run mode Less spammy deprecations Thursday, 12 September 13
  91. TRANSITION Thursday, 12 September 13

  92. TRANSITION 2.14 (last release of 2.x.) Thursday, 12 September 13

  93. TRANSITION 2.14 (last release of 2.x.) 2.99 (transition) Thursday, 12

    September 13
  94. TRANSITION 2.14 (last release of 2.x.) 2.99 (transition) 3.0 (rc

    then final) Thursday, 12 September 13
  95. Summary Thursday, 12 September 13

  96. Summary No more 1.8.6 / 1.9.1 Thursday, 12 September 13

  97. Summary No more 1.8.6 / 1.9.1 Less monkey patching (use

    expect) Thursday, 12 September 13
  98. Summary No more 1.8.6 / 1.9.1 Less monkey patching (use

    expect) New reporters Thursday, 12 September 13
  99. Summary No more 1.8.6 / 1.9.1 Less monkey patching (use

    expect) New reporters New shared_example behaviour Thursday, 12 September 13
  100. Summary No more 1.8.6 / 1.9.1 Less monkey patching (use

    expect) New reporters New shared_example behaviour Cleaner, leaner, meaner! Thursday, 12 September 13
  101. .*...........*.*...................................................*..............*...............*..... ...........F....................*...........*.............*.*...........*...........F.*..............F. ..........FF...........**...........*...........**...........*.*..........................*........... *.*...................................................*..............*...............*................F.. ..................*...........*.............*.*...........*...........F.*..............F...........FF. ..........**...........*...........**...........*.*..........................*...........*.*.......... .........................................*..............*...............*................F................ ....*...........*.............*.*...........*...........F.*..............F...........FF...........** ...........*...........**...........*.*..........................*...........*.*....................... ............................*..............*...............*................F....................*.......

    ....*.............*.*...........*...........F.*..............F...........FF...........**...........* ...........**...........*.*..........................*...........*.*.................................... ...............*..............*...............*................F....................*...........*........ .....*.*...........*...........F.*..............F...........FF...........**...........*...........** ...........*.*..........................*...........*.*.................................................. .*..............*...............*................F....................*...........*.............*.*.... .......*...........F.*..............F...........FF...........**...........*...........**...........* .*..........................*...........*.*...................................................*.......... ....*...............*................F....................*...........*.............*.*...........*.... .......F.*..............F...........FF...........**...........*...........**...........*.*.......... ................*...........*.*...................................................*..............*....... ........*................F....................*...........*.............*.*...........*...........F.*.. ............F...........FF...........**...........*...........**...........*.*........................ ..*...........*.*...................................................*..............*...............*.... ............F....................*...........*.............*.*...........*...........F.*.............. F...........FF...........**...........*...........**...........*.*..........................*........ ...*.*...................................................*..............*...............*................ F....................*...........*.............*.*...........*...........F.*..............F........... FF...........**...........*...........**...........*.*..........................*...........*.*..... ..............................................*..............*...............*................F........... .........*...........*.............*.*...........*...........F.*..............F...........FF.......... .**...........*...........**...........*.*..........................*...........*.*................... ................................*..............*...............*................F....................*... ........*.............*.*...........*...........F.*..............F...........FF...........**......... QUESTIONS? Thursday, 12 September 13
  102. .*...........*.*...................................................*..............*...............*..... ...........F....................*...........*.............*.*...........*...........F.*..............F. ..........FF...........**...........*...........**...........*.*..........................*........... *.*...................................................*..............*...............*................F.. ..................*...........*.............*.*...........*...........F.*..............F...........FF. ..........**...........*...........**...........*.*..........................*...........*.*.......... .........................................*..............*...............*................F................ ....*...........*.............*.*...........*...........F.*..............F...........FF...........** ...........*...........**...........*.*..........................*...........*.*....................... ............................*..............*...............*................F....................*.......

    ....*.............*.*...........*...........F.*..............F...........FF...........**...........* ...........**...........*.*..........................*...........*.*.................................... ...............*..............*...............*................F....................*...........*........ .....*.*...........*...........F.*..............F...........FF...........**...........*...........** ...........*.*..........................*...........*.*.................................................. .*..............*...............*................F....................*...........*.............*.*.... .......*...........F.*..............F...........FF...........**...........*...........**...........* .*..........................*...........*.*...................................................*.......... ....*...............*................F....................*...........*.............*.*...........*.... .......F.*..............F...........FF...........**...........*...........**...........*.*.......... ................*...........*.*...................................................*..............*....... ........*................F....................*...........*.............*.*...........*...........F.*.. ............F...........FF...........**...........*...........**...........*.*........................ ..*...........*.*...................................................*..............*...............*.... ............F....................*...........*.............*.*...........*...........F.*.............. F...........FF...........**...........*...........**...........*.*..........................*........ ...*.*...................................................*..............*...............*................ F....................*...........*.............*.*...........*...........F.*..............F........... FF...........**...........*...........**...........*.*..........................*...........*.*..... ..............................................*..............*...............*................F........... .........*...........*.............*.*...........*...........F.*..............F...........FF.......... .**...........*...........**...........*.*..........................*...........*.*................... ................................*..............*...............*................F....................*... ........*.............*.*...........*...........F.*..............F...........FF...........**......... THANKS @jonrowe (Twitter, GitHub, etc) http://jonrowe.co.uk Thursday, 12 September 13