div class=ts-pagebutton class=gotoPage data-page=1Page 1button div class=ts-imagea href=https:reader039vdocumentsusreader039viewer202203221755a9a7971a28abd0178b4584html5page1jpg target=_blank img data-url=how-we-test-rails-appshtmlpage=1 data-page=1 class=ts-thumb lazyload alt=Page 1: How We Test Rails Apps loading=lazy src=data:imagegifbase64iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAQAAADYv8WvAAAAD0lEQVR42mP8X8AwAgiABKBAv+vAXklAAAAAElFTkSuQmCC data-src=https:reader039vdocumentsusreader039viewer202203221755a9a7971a28abd0178b4584html5thumbnails1jpg width=140 height=200 adivpHow We Test Rails Applicationspdivdiv class=ts-pagebutton class=gotoPage data-page=2Page 2button div class=ts-imagea href=https:reader039vdocumentsusreader039viewer202203221755a9a7971a28abd0178b4584html5page2jpg target=_blank img data-url=how-we-test-rails-appshtmlpage=2 data-page=2 class=ts-thumb lazyload alt=Page 2: How We Test Rails Apps loading=lazy src=data:imagegifbase64iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAQAAADYv8WvAAAAD0lEQVR42mP8X8AwAgiABKBAv+vAXklAAAAAElFTkSuQmCC data-src=https:reader039vdocumentsusreader039viewer202203221755a9a7971a28abd0178b4584html5thumbnails2jpg width=140 height=200 adivpDamian GalarzaDeveloper at thoughtbotp p@dgalarzapdivdiv class=ts-pagebutton class=gotoPage data-page=3Page 3button div class=ts-imagea href=https:reader039vdocumentsusreader039viewer202203221755a9a7971a28abd0178b4584html5page3jpg target=_blank img data-url=how-we-test-rails-appshtmlpage=3 data-page=3 class=ts-thumb lazyload alt=Page 3: How We Test Rails Apps loading=lazy src=data:imagegifbase64iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAQAAADYv8WvAAAAD0lEQVR42mP8X8AwAgiABKBAv+vAXklAAAAAElFTkSuQmCC data-src=https:reader039vdocumentsusreader039viewer202203221755a9a7971a28abd0178b4584html5thumbnails3jpg width=140 height=200 adivpRSpecpdivdiv class=ts-pagebutton class=gotoPage data-page=4Page 4button div class=ts-imagea href=https:reader039vdocumentsusreader039viewer202203221755a9a7971a28abd0178b4584html5page4jpg target=_blank img data-url=how-we-test-rails-appshtmlpage=4 data-page=4 class=ts-thumb lazyload alt=Page 4: How We Test Rails Apps loading=lazy src=data:imagegifbase64iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAQAAADYv8WvAAAAD0lEQVR42mP8X8AwAgiABKBAv+vAXklAAAAAElFTkSuQmCC data-src=https:reader039vdocumentsusreader039viewer202203221755a9a7971a28abd0178b4584html5thumbnails4jpg width=140 height=200 adivpOutside In Testingpdivdiv class=ts-pagebutton class=gotoPage data-page=5Page 5button div class=ts-imagea href=https:reader039vdocumentsusreader039viewer202203221755a9a7971a28abd0178b4584html5page5jpg target=_blank img data-url=how-we-test-rails-appshtmlpage=5 data-page=5 class=ts-thumb lazyload alt=Page 5: How We Test Rails Apps loading=lazy src=data:imagegifbase64iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAQAAADYv8WvAAAAD0lEQVR42mP8X8AwAgiABKBAv+vAXklAAAAAElFTkSuQmCC data-src=https:reader039vdocumentsusreader039viewer202203221755a9a7971a28abd0178b4584html5thumbnails5jpg width=140 height=200 adivpFeature specspdivdiv class=ts-pagebutton class=gotoPage data-page=6Page 6button div class=ts-imagea href=https:reader039vdocumentsusreader039viewer202203221755a9a7971a28abd0178b4584html5page6jpg target=_blank img data-url=how-we-test-rails-appshtmlpage=6 data-page=6 class=ts-thumb lazyload alt=Page 6: How We Test Rails Apps loading=lazy src=data:imagegifbase64iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAQAAADYv8WvAAAAD0lEQVR42mP8X8AwAgiABKBAv+vAXklAAAAAElFTkSuQmCC data-src=https:reader039vdocumentsusreader039viewer202203221755a9a7971a28abd0178b4584html5thumbnails6jpg width=140 height=200 adivpFeature Specsp pSlowpdivdiv class=ts-pagebutton class=gotoPage data-page=7Page 7button div class=ts-imagea href=https:reader039vdocumentsusreader039viewer202203221755a9a7971a28abd0178b4584html5page7jpg target=_blank img data-url=how-we-test-rails-appshtmlpage=7 data-page=7 class=ts-thumb lazyload alt=Page 7: How We Test Rails Apps loading=lazy src=data:imagegifbase64iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAQAAADYv8WvAAAAD0lEQVR42mP8X8AwAgiABKBAv+vAXklAAAAAElFTkSuQmCC data-src=https:reader039vdocumentsusreader039viewer202203221755a9a7971a28abd0178b4584html5thumbnails7jpg width=140 height=200 adivpFeature Specsp pspecfeaturespdivdiv class=ts-pagebutton class=gotoPage data-page=8Page 8button div class=ts-imagea href=https:reader039vdocumentsusreader039viewer202203221755a9a7971a28abd0178b4584html5page8jpg target=_blank img data-url=how-we-test-rails-appshtmlpage=8 data-page=8 class=ts-thumb lazyload alt=Page 8: How We Test Rails Apps loading=lazy src=data:imagegifbase64iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAQAAADYv8WvAAAAD0lEQVR42mP8X8AwAgiABKBAv+vAXklAAAAAElFTkSuQmCC data-src=https:reader039vdocumentsusreader039viewer202203221755a9a7971a28abd0178b4584html5thumbnails8jpg width=140 height=200 adivpFeature Specsp pROLE_ACTION_specrbpdivdiv class=ts-pagebutton class=gotoPage data-page=9Page 9button div class=ts-imagea href=https:reader039vdocumentsusreader039viewer202203221755a9a7971a28abd0178b4584html5page9jpg target=_blank img data-url=how-we-test-rails-appshtmlpage=9 data-page=9 class=ts-thumb lazyload alt=Page 9: How We Test Rails Apps loading=lazy src=data:imagegifbase64iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAQAAADYv8WvAAAAD0lEQVR42mP8X8AwAgiABKBAv+vAXklAAAAAElFTkSuQmCC data-src=https:reader039vdocumentsusreader039viewer202203221755a9a7971a28abd0178b4584html5thumbnails9jpg width=140 height=200 adivpFeature Specsp ppatient_checks_in_for_appointment_specrbpdivdiv class=ts-pagebutton class=gotoPage data-page=10Page 10button div class=ts-imagea href=https:reader039vdocumentsusreader039viewer202203221755a9a7971a28abd0178b4584html5page10jpg target=_blank img data-url=how-we-test-rails-appshtmlpage=10 data-page=10 class=ts-thumb lazyload alt=Page 10: How We Test Rails Apps loading=lazy src=data:imagegifbase64iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAQAAADYv8WvAAAAD0lEQVR42mP8X8AwAgiABKBAv+vAXklAAAAAElFTkSuQmCC data-src=https:reader039vdocumentsusreader039viewer202203221755a9a7971a28abd0178b4584html5thumbnails10jpg width=140 height=200 adivpFeature Specspdivdiv class=ts-pagebutton class=gotoPage data-page=11Page 11button div class=ts-imagea href=https:reader039vdocumentsusreader039viewer202203221755a9a7971a28abd0178b4584html5page11jpg target=_blank img data-url=how-we-test-rails-appshtmlpage=11 data-page=11 class=ts-thumb lazyload alt=Page 11: How We Test Rails Apps loading=lazy src=data:imagegifbase64iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAQAAADYv8WvAAAAD0lEQVR42mP8X8AwAgiABKBAv+vAXklAAAAAElFTkSuQmCC data-src=https:reader039vdocumentsusreader039viewer202203221755a9a7971a28abd0178b4584html5thumbnails11jpg width=140 height=200 adivpModel specspdivdiv class=ts-pagebutton class=gotoPage data-page=12Page 12button div class=ts-imagea href=https:reader039vdocumentsusreader039viewer202203221755a9a7971a28abd0178b4584html5page12jpg target=_blank img data-url=how-we-test-rails-appshtmlpage=12 data-page=12 class=ts-thumb lazyload alt=Page 12: How We Test Rails Apps loading=lazy src=data:imagegifbase64iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAQAAADYv8WvAAAAD0lEQVR42mP8X8AwAgiABKBAv+vAXklAAAAAElFTkSuQmCC data-src=https:reader039vdocumentsusreader039viewer202203221755a9a7971a28abd0178b4584html5thumbnails12jpg width=140 height=200 adivpModel Specsp pFastpdivdiv class=ts-pagebutton class=gotoPage data-page=13Page 13button div class=ts-imagea href=https:reader039vdocumentsusreader039viewer202203221755a9a7971a28abd0178b4584html5page13jpg target=_blank img data-url=how-we-test-rails-appshtmlpage=13 data-page=13 class=ts-thumb lazyload alt=Page 13: How We Test Rails Apps loading=lazy src=data:imagegifbase64iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAQAAADYv8WvAAAAD0lEQVR42mP8X8AwAgiABKBAv+vAXklAAAAAElFTkSuQmCC data-src=https:reader039vdocumentsusreader039viewer202203221755a9a7971a28abd0178b4584html5thumbnails13jpg width=140 height=200 adivpModel Specsp pTest smaller partspdivdiv class=ts-pagebutton class=gotoPage data-page=14Page 14button div class=ts-imagea href=https:reader039vdocumentsusreader039viewer202203221755a9a7971a28abd0178b4584html5page14jpg target=_blank img data-url=how-we-test-rails-appshtmlpage=14 data-page=14 class=ts-thumb lazyload alt=Page 14: How We Test Rails Apps loading=lazy src=data:imagegifbase64iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAQAAADYv8WvAAAAD0lEQVR42mP8X8AwAgiABKBAv+vAXklAAAAAElFTkSuQmCC data-src=https:reader039vdocumentsusreader039viewer202203221755a9a7971a28abd0178b4584html5thumbnails14jpg width=140 height=200 adivpModel Specspdivdiv class=ts-pagebutton class=gotoPage data-page=15Page 15button div class=ts-imagea href=https:reader039vdocumentsusreader039viewer202203221755a9a7971a28abd0178b4584html5page15jpg target=_blank img data-url=how-we-test-rails-appshtmlpage=15 data-page=15 class=ts-thumb lazyload alt=Page 15: How We Test Rails Apps loading=lazy src=data:imagegifbase64iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAQAAADYv8WvAAAAD0lEQVR42mP8X8AwAgiABKBAv+vAXklAAAAAElFTkSuQmCC data-src=https:reader039vdocumentsusreader039viewer202203221755a9a7971a28abd0178b4584html5thumbnails15jpg width=140 height=200 adivpModel Specspdivdiv class=ts-pagebutton class=gotoPage data-page=16Page 16button div class=ts-imagea href=https:reader039vdocumentsusreader039viewer202203221755a9a7971a28abd0178b4584html5page16jpg target=_blank img data-url=how-we-test-rails-appshtmlpage=16 data-page=16 class=ts-thumb lazyload alt=Page 16: How We Test Rails Apps loading=lazy src=data:imagegifbase64iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAQAAADYv8WvAAAAD0lEQVR42mP8X8AwAgiABKBAv+vAXklAAAAAElFTkSuQmCC data-src=https:reader039vdocumentsusreader039viewer202203221755a9a7971a28abd0178b4584html5thumbnails16jpg width=140 height=200 adivpModel Specspdivdiv class=ts-pagebutton class=gotoPage data-page=17Page 17button div class=ts-imagea href=https:reader039vdocumentsusreader039viewer202203221755a9a7971a28abd0178b4584html5page17jpg target=_blank img data-url=how-we-test-rails-appshtmlpage=17 data-page=17 class=ts-thumb lazyload alt=Page 17: How We Test Rails Apps loading=lazy src=data:imagegifbase64iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAQAAADYv8WvAAAAD0lEQVR42mP8X8AwAgiABKBAv+vAXklAAAAAElFTkSuQmCC data-src=https:reader039vdocumentsusreader039viewer202203221755a9a7971a28abd0178b4584html5thumbnails17jpg width=140 height=200 adivpModel Specspdivdiv class=ts-pagebutton class=gotoPage data-page=18Page 18button div class=ts-imagea href=https:reader039vdocumentsusreader039viewer202203221755a9a7971a28abd0178b4584html5page18jpg target=_blank img data-url=how-we-test-rails-appshtmlpage=18 data-page=18 class=ts-thumb lazyload alt=Page 18: How We Test Rails Apps loading=lazy src=data:imagegifbase64iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAQAAADYv8WvAAAAD0lEQVR42mP8X8AwAgiABKBAv+vAXklAAAAAElFTkSuQmCC data-src=https:reader039vdocumentsusreader039viewer202203221755a9a7971a28abd0178b4584html5thumbnails18jpg width=140 height=200 adivpController specspdivdiv class=ts-pagebutton class=gotoPage data-page=19Page 19button div class=ts-imagea href=https:reader039vdocumentsusreader039viewer202203221755a9a7971a28abd0178b4584html5page19jpg target=_blank img data-url=how-we-test-rails-appshtmlpage=19 data-page=19 class=ts-thumb lazyload alt=Page 19: How We Test Rails Apps loading=lazy src=data:imagegifbase64iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAQAAADYv8WvAAAAD0lEQVR42mP8X8AwAgiABKBAv+vAXklAAAAAElFTkSuQmCC data-src=https:reader039vdocumentsusreader039viewer202203221755a9a7971a28abd0178b4584html5thumbnails19jpg width=140 height=200 adivpController Specsp pTest multiple pathspdivdiv class=ts-pagebutton class=gotoPage data-page=20Page 20button div class=ts-imagea href=https:reader039vdocumentsusreader039viewer202203221755a9a7971a28abd0178b4584html5page20jpg target=_blank img data-url=how-we-test-rails-appshtmlpage=20 data-page=20 class=ts-thumb lazyload alt=Page 20: How We Test Rails Apps loading=lazy src=data:imagegifbase64iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAQAAADYv8WvAAAAD0lEQVR42mP8X8AwAgiABKBAv+vAXklAAAAAElFTkSuQmCC data-src=https:reader039vdocumentsusreader039viewer202203221755a9a7971a28abd0178b4584html5thumbnails20jpg width=140 height=200 adivpController Specsp pDon’t duplicate tests from featurespdivdiv class=ts-pagebutton class=gotoPage data-page=21Page 21button div class=ts-imagea href=https:reader039vdocumentsusreader039viewer202203221755a9a7971a28abd0178b4584html5page21jpg target=_blank img data-url=how-we-test-rails-appshtmlpage=21 data-page=21 class=ts-thumb lazyload alt=Page 21: How We Test Rails Apps loading=lazy src=data:imagegifbase64iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAQAAADYv8WvAAAAD0lEQVR42mP8X8AwAgiABKBAv+vAXklAAAAAElFTkSuQmCC data-src=https:reader039vdocumentsusreader039viewer202203221755a9a7971a28abd0178b4584html5thumbnails21jpg width=140 height=200 adivpController Specspdivdiv class=ts-pagebutton class=gotoPage data-page=22Page 22button div class=ts-imagea href=https:reader039vdocumentsusreader039viewer202203221755a9a7971a28abd0178b4584html5page22jpg target=_blank img data-url=how-we-test-rails-appshtmlpage=22 data-page=22 class=ts-thumb lazyload alt=Page 22: How We Test Rails Apps loading=lazy src=data:imagegifbase64iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAQAAADYv8WvAAAAD0lEQVR42mP8X8AwAgiABKBAv+vAXklAAAAAElFTkSuQmCC data-src=https:reader039vdocumentsusreader039viewer202203221755a9a7971a28abd0178b4584html5thumbnails22jpg width=140 height=200 adivpView specspdivdiv class=ts-pagebutton class=gotoPage data-page=23Page 23button div class=ts-imagea href=https:reader039vdocumentsusreader039viewer202203221755a9a7971a28abd0178b4584html5page23jpg target=_blank img data-url=how-we-test-rails-appshtmlpage=23 data-page=23 class=ts-thumb lazyload alt=Page 23: How We Test Rails Apps loading=lazy src=data:imagegifbase64iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAQAAADYv8WvAAAAD0lEQVR42mP8X8AwAgiABKBAv+vAXklAAAAAElFTkSuQmCC data-src=https:reader039vdocumentsusreader039viewer202203221755a9a7971a28abd0178b4584html5thumbnails23jpg width=140 height=200 adivpView Specsp pConditional View Logicpdivdiv class=ts-pagebutton class=gotoPage data-page=24Page 24button div class=ts-imagea href=https:reader039vdocumentsusreader039viewer202203221755a9a7971a28abd0178b4584html5page24jpg target=_blank img data-url=how-we-test-rails-appshtmlpage=24 data-page=24 class=ts-thumb lazyload alt=Page 24: How We Test Rails Apps loading=lazy src=data:imagegifbase64iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAQAAADYv8WvAAAAD0lEQVR42mP8X8AwAgiABKBAv+vAXklAAAAAElFTkSuQmCC data-src=https:reader039vdocumentsusreader039viewer202203221755a9a7971a28abd0178b4584html5thumbnails24jpg width=140 height=200 adivpView Specspdivdiv class=ts-pagebutton class=gotoPage data-page=25Page 25button div class=ts-imagea href=https:reader039vdocumentsusreader039viewer202203221755a9a7971a28abd0178b4584html5page25jpg target=_blank img data-url=how-we-test-rails-appshtmlpage=25 data-page=25 class=ts-thumb lazyload alt=Page 25: How We Test Rails Apps loading=lazy src=data:imagegifbase64iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAQAAADYv8WvAAAAD0lEQVR42mP8X8AwAgiABKBAv+vAXklAAAAAElFTkSuQmCC data-src=https:reader039vdocumentsusreader039viewer202203221755a9a7971a28abd0178b4584html5thumbnails25jpg width=140 height=200 adivpTest doubles and stubspdivdiv class=ts-pagebutton class=gotoPage data-page=26Page 26button div class=ts-imagea href=https:reader039vdocumentsusreader039viewer202203221755a9a7971a28abd0178b4584html5page26jpg target=_blank img data-url=how-we-test-rails-appshtmlpage=26 data-page=26 class=ts-thumb lazyload alt=Page 26: How We Test Rails Apps loading=lazy src=data:imagegifbase64iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAQAAADYv8WvAAAAD0lEQVR42mP8X8AwAgiABKBAv+vAXklAAAAAElFTkSuQmCC data-src=https:reader039vdocumentsusreader039viewer202203221755a9a7971a28abd0178b4584html5thumbnails26jpg width=140 height=200 adivpTest doubles and stubspdivdiv class=ts-pagebutton class=gotoPage data-page=27Page 27button div class=ts-imagea href=https:reader039vdocumentsusreader039viewer202203221755a9a7971a28abd0178b4584html5page27jpg target=_blank img data-url=how-we-test-rails-appshtmlpage=27 data-page=27 class=ts-thumb lazyload alt=Page 27: How We Test Rails Apps loading=lazy src=data:imagegifbase64iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAQAAADYv8WvAAAAD0lEQVR42mP8X8AwAgiABKBAv+vAXklAAAAAElFTkSuQmCC data-src=https:reader039vdocumentsusreader039viewer202203221755a9a7971a28abd0178b4584html5thumbnails27jpg width=140 height=200 adivpTest doubles and stubspdivdiv class=ts-pagebutton class=gotoPage data-page=28Page 28button div class=ts-imagea href=https:reader039vdocumentsusreader039viewer202203221755a9a7971a28abd0178b4584html5page28jpg target=_blank img data-url=how-we-test-rails-appshtmlpage=28 data-page=28 class=ts-thumb lazyload alt=Page 28: How We Test Rails Apps loading=lazy src=data:imagegifbase64iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAQAAADYv8WvAAAAD0lEQVR42mP8X8AwAgiABKBAv+vAXklAAAAAElFTkSuQmCC data-src=https:reader039vdocumentsusreader039viewer202203221755a9a7971a28abd0178b4584html5thumbnails28jpg width=140 height=200 adivpTest spiespdivdiv class=ts-pagebutton class=gotoPage data-page=29Page 29button div class=ts-imagea href=https:reader039vdocumentsusreader039viewer202203221755a9a7971a28abd0178b4584html5page29jpg target=_blank img data-url=how-we-test-rails-appshtmlpage=29 data-page=29 class=ts-thumb lazyload alt=Page 29: How We Test Rails Apps loading=lazy src=data:imagegifbase64iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAQAAADYv8WvAAAAD0lEQVR42mP8X8AwAgiABKBAv+vAXklAAAAAElFTkSuQmCC data-src=https:reader039vdocumentsusreader039viewer202203221755a9a7971a28abd0178b4584html5thumbnails29jpg width=140 height=200 adivpTest spiesp pValidate a message is receivedpdivdiv class=ts-pagebutton class=gotoPage data-page=30Page 30button div class=ts-imagea href=https:reader039vdocumentsusreader039viewer202203221755a9a7971a28abd0178b4584html5page30jpg target=_blank img data-url=how-we-test-rails-appshtmlpage=30 data-page=30 class=ts-thumb lazyload alt=Page 30: How We Test Rails Apps loading=lazy src=data:imagegifbase64iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAQAAADYv8WvAAAAD0lEQVR42mP8X8AwAgiABKBAv+vAXklAAAAAElFTkSuQmCC data-src=https:reader039vdocumentsusreader039viewer202203221755a9a7971a28abd0178b4584html5thumbnails30jpg width=140 height=200 adivpTest spiespdivdiv class=ts-pagebutton class=gotoPage data-page=31Page 31button div class=ts-imagea href=https:reader039vdocumentsusreader039viewer202203221755a9a7971a28abd0178b4584html5page31jpg target=_blank img data-url=how-we-test-rails-appshtmlpage=31 data-page=31 class=ts-thumb lazyload alt=Page 31: How We Test Rails Apps loading=lazy src=data:imagegifbase64iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAQAAADYv8WvAAAAD0lEQVR42mP8X8AwAgiABKBAv+vAXklAAAAAElFTkSuQmCC data-src=https:reader039vdocumentsusreader039viewer202203221755a9a7971a28abd0178b4584html5thumbnails31jpg width=140 height=200 adivpQuestionspdiv