Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Test on Rails ✘╹◡╹✘
Search
r7kamura
September 19, 2012
Programming
10
3.8k
Test on Rails ✘╹◡╹✘
r7kamura
September 19, 2012
Tweet
Share
More Decks by r7kamura
See All by r7kamura
Railsアップグレード百景
r7kamura
11
6.3k
個人開発のやっていき方
r7kamura
94
23k
amakanにおける書籍のシリーズ判定方法について 2016-08-21
r7kamura
10
5.9k
Tenkaichi Bot Butoukai
r7kamura
11
5k
Paging in API
r7kamura
3
8.4k
Chanko Hacking Guide
r7kamura
5
1.2k
Making things with something small
r7kamura
1
450
Hidden
r7kamura
0
61
Butsukari Geiko
r7kamura
9
36k
Other Decks in Programming
See All in Programming
2024年版 Kotlin サーバーサイドプログラミング実践開発
n_takehata
3
920
How to send distibuted traces to Datadog using build own OpenTelemetry-Lambda distribution
aereal
3
110
IaCにおけるテスト考察 / Tests in IaC
linyows
2
210
イベント駆動アーキテクチャ導入の手引きと共通の落とし穴 / Guide to Implementing Event-Driven Architecture and Common Pitfalls
nrslib
12
3.9k
30分でわかるつくって、壊して、直して学ぶ Kubernetes入門
aoi1
6
760
我々はなぜテストを書くのか / Why we write test codes
takaking22
6
670
What new in Android Studio 2024.6
vast00
0
130
プログラミングスクールのつながりがキャリアにつながるのかもしれない話 / Connections at programming schools may lead to a career
aiandrox
0
290
宇宙一早くAmazon Bedrock 生成AIアプリ開発入門の献本が届いたので 感想をしみじみ語る
ymd65536
1
160
エンジニアが開発生産性を上げるためにやる最初の一歩
ktchiroyah
0
130
Using Next.js as a full-stack framework / Next.jsをフルスタックフレームワークとして使ってみた
mongolyy
PRO
1
140
並行処理を学びGuzzleと仲良くなる
shimabox
2
360
Featured
See All Featured
The Mythical Team-Month
searls
217
42k
Imperfection Machines: The Place of Print at Facebook
scottboms
261
12k
Unsuck your backbone
ammeep
664
57k
We Have a Design System, Now What?
morganepeng
45
6.9k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
22
1.8k
How STYLIGHT went responsive
nonsquared
92
4.9k
ParisWeb 2013: Learning to Love: Crash Course in Emotional UX Design
dotmariusz
104
6.7k
The Invisible Side of Design
smashingmag
294
50k
Build The Right Thing And Hit Your Dates
maggiecrowley
27
2.1k
Optimising Largest Contentful Paint
csswizardry
14
2.6k
GraphQLとの向き合い方2022年版
quramy
35
13k
Making Projects Easy
brettharned
110
5.6k
Transcript
Test on Rails based on “Rails Test Prescriptions” by Noel
Rappin Ryo Nakamura (@r7kamura) ✘ ╹◡╹ ✘
1. Why test? 2. Unit 3. Model 4. Functional 5.
View 6. Integration
Why test?
* to speed up validation * to design architectures *
to assure its quality ... Why test?
to speed up validation automating test * open browser... *
type the URL “h..tt..p://...” * check the contents...
to design architecture * write clean and independent code (test
behaves like a third-party code) * think the correct behavior of code (this would be an example of test)
to assure its quality * prevent code from enbugging *
maybe forced to write test ... ;(
For more details why you... Please ask Mohicans around you
Unit Test
Forms of writing unit test - ✘╹◡╹ ✘ http://r7kamura.hatenablog.com/ entry/2012/09/19/113239
Unit Test
Model Test
Unit Test of Model. It's easy to write Model Test.
"Skinny Controller, Fat Model" Model Test
Functional Test
Functional tests Verify the system satisfies requested features of user.
In Rails, it tests Controller & View by 1 request
Targets 1. normal 2. invalid 3. security
1. normal A normal request should pass expected data to
the view. @foo, sessions, cookies, flash
2. invalid An invalid request should be handled properly. redirect_to
:root
3. security User’s and system’s security should be protected. get(others_entry_path).
should_not be_success
Non targets * many redirections * user interaction * HTTP
methods (in Rails)
View Test
View Test Verify: * logic * structure (semantic mean) Used
in Controller & Integration Test on Rails
Good targets * logic in a view (necessary evil...;) *
security problem * way to render structures
Bad targets * text in HTML tag * look and
feel verify only “semantic meanings”
Integration Test
Integration Test verify the interactions(I/F) of multiple components Acceptance test
might see to this. Capybara, Cucumber, ...
When to use Integration Test? To validate the interactions of
the modules that are well-tested.
Good targets * interactions in multiple steps * dependency with
prev state * legacy code (black-box) * with JavaScript
Bad targets * only 1 request * only for view
testing
1. Why test? 2. Unit 3. Model 4. Functional 5.
View 6. Integration
thanks ✘ ╹◡╹ ✘ @r7kamura