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
これまでに一番苦労したプロジェクト
Search
嘉音とんと
July 29, 2023
0
23
これまでに一番苦労したプロジェクト
私が 6 年間のエンジニア人生で一番苦労したプロジェクトの話をします。
嘉音とんと
July 29, 2023
Tweet
Share
More Decks by 嘉音とんと
See All by 嘉音とんと
CSSの歩き方
kanon_tonto
0
52
推しの VTuber の公式 Web サイトを作った Part.2
kanon_tonto
0
27
推しの VTuber の公式サイトを作った
kanon_tonto
0
170
ぼっちがリモートワークやってみた
kanon_tonto
0
90
Kanazawa.rbを振り返る
kanon_tonto
0
100
もう僕は勤怠を入力しなくても良い
kanon_tonto
0
47
Goで始めるWebsocketプログラミング
kanon_tonto
0
160
AWS Lambdaでファイルをこねくり回す
kanon_tonto
0
430
iOSアプリをリリースするまで
kanon_tonto
2
410
Featured
See All Featured
GitHub's CSS Performance
jonrohan
1032
470k
Building a Scalable Design System with Sketch
lauravandoore
463
34k
Thoughts on Productivity
jonyablonski
73
4.9k
Reflections from 52 weeks, 52 projects
jeffersonlam
355
21k
Building Adaptive Systems
keathley
44
2.8k
Agile that works and the tools we love
rasmusluckow
331
21k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
46
7.8k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
15k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.5k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1k
The Cost Of JavaScript in 2023
addyosmani
55
9.3k
How GitHub (no longer) Works
holman
315
140k
Transcript
@27ma4_ton10 github.com/RyuseiNomi 人生で一番苦労したプロジェクト
Ryusei Nomi # Webエンジニア # マリオカート # VTuber # Go
/ Javascript @27ma4_ton10
事業システムのカバレッジ向上 (2018/4 ~ 2019/6) 苦労したプロジェクト
🛠 技術スタック ・PHP 5.1 ・PHPUnit 4.x ・Docker ・Selenium ・ShellScript
📝 プロジェクト概要 ・ PHP のバージョンアップをしよう! ・そのためにテストカバレッジを上げよう
🥺 困難な点 ・ PHPUnit が古すぎて private メソッドのモックが作れない ・巨大な public
メソッドのテストが困難
None
∑(゚Д゚)!?
🛠 runkit 関数とは? ・メソッドや組み込み関数の 動作を変更したり、抹消したり出来る😈
None
・ return10 が 10 以外を返せること ・ add10 を呼んだ時に return10 を通らないこと
・他のテストケースに影響しないこと
先に理想の テストコードを 書いてみた
これ 1 行で モックを 作りたい!
❓モック化する手順 1. 本番コードのクラス名とメソッド名を受け取り、ランダムな文字列にリネーム 2. メソッド名とランダムな文字列を紐づけるために、プロパティにスタック 3. 該当するメソッド名と同じ名前の偽メソッドを作成 4. 偽メソッドが本番コードになりすましている間にテストを実行 5.
テストが終わったら偽メソッドを消して、プロパティから本番コードを取り出し、元の名前にリネーム
本番コードのクラス名とメソッド名を受け取り、ランダムな文字列にリネーム
メソッド名とランダムな文字列を紐づけるために、プロパティにスタック
該当するメソッド名と同じ名前の偽メソッドを作成
偽メソッドが本番コードになりすましている間にテストを実行
テストが終わったら偽メソッドを消して、プロパティから本番コードを取り出し、元の名前にリネーム ・必ず後ろから順に削除する ・プロパティの中身を全て削除する
None
💰 何が得られたか? ・よりテストコードを書きやすくなった ・社内ライブラリとして公開することで みんなテストを書いてくれるようになった
📣 今後に活かせること ・作ったものは自慢しよう ・自分たちがやっている仕事をアピールしよう ・その成果が誰かを幸せにするかも知れないから
None