clean and quality unit tests
DESCRIPTION
Talk about readability and high quality of unit tests written in PHPUnitTRANSCRIPT
![Page 1: Clean and Quality Unit Tests](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f80f6b4c905435d8b49b6/html5/thumbnails/1.jpg)
Clean & Quality unit tests
![Page 2: Clean and Quality Unit Tests](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f80f6b4c905435d8b49b6/html5/thumbnails/2.jpg)
Wojtek Zieliński
@codecleaner
![Page 3: Clean and Quality Unit Tests](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f80f6b4c905435d8b49b6/html5/thumbnails/3.jpg)
• Names matters
• Exceptions
• Test Doubles
• Stubbing Collections
• Arrange Act Assert
What’s it all about?
![Page 4: Clean and Quality Unit Tests](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f80f6b4c905435d8b49b6/html5/thumbnails/4.jpg)
Names matters
![Page 5: Clean and Quality Unit Tests](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f80f6b4c905435d8b49b6/html5/thumbnails/5.jpg)
![Page 6: Clean and Quality Unit Tests](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f80f6b4c905435d8b49b6/html5/thumbnails/6.jpg)
![Page 7: Clean and Quality Unit Tests](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f80f6b4c905435d8b49b6/html5/thumbnails/7.jpg)
![Page 8: Clean and Quality Unit Tests](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f80f6b4c905435d8b49b6/html5/thumbnails/8.jpg)
![Page 9: Clean and Quality Unit Tests](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f80f6b4c905435d8b49b6/html5/thumbnails/9.jpg)
![Page 10: Clean and Quality Unit Tests](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f80f6b4c905435d8b49b6/html5/thumbnails/10.jpg)
![Page 11: Clean and Quality Unit Tests](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f80f6b4c905435d8b49b6/html5/thumbnails/11.jpg)
![Page 12: Clean and Quality Unit Tests](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f80f6b4c905435d8b49b6/html5/thumbnails/12.jpg)
![Page 13: Clean and Quality Unit Tests](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f80f6b4c905435d8b49b6/html5/thumbnails/13.jpg)
Test a single concept in each test function
Robert C. Martin
![Page 14: Clean and Quality Unit Tests](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f80f6b4c905435d8b49b6/html5/thumbnails/14.jpg)
![Page 15: Clean and Quality Unit Tests](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f80f6b4c905435d8b49b6/html5/thumbnails/15.jpg)
![Page 16: Clean and Quality Unit Tests](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f80f6b4c905435d8b49b6/html5/thumbnails/16.jpg)
![Page 17: Clean and Quality Unit Tests](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f80f6b4c905435d8b49b6/html5/thumbnails/17.jpg)
![Page 18: Clean and Quality Unit Tests](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f80f6b4c905435d8b49b6/html5/thumbnails/18.jpg)
![Page 19: Clean and Quality Unit Tests](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f80f6b4c905435d8b49b6/html5/thumbnails/19.jpg)
![Page 20: Clean and Quality Unit Tests](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f80f6b4c905435d8b49b6/html5/thumbnails/20.jpg)
![Page 21: Clean and Quality Unit Tests](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f80f6b4c905435d8b49b6/html5/thumbnails/21.jpg)
![Page 22: Clean and Quality Unit Tests](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f80f6b4c905435d8b49b6/html5/thumbnails/22.jpg)
![Page 23: Clean and Quality Unit Tests](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f80f6b4c905435d8b49b6/html5/thumbnails/23.jpg)
![Page 24: Clean and Quality Unit Tests](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f80f6b4c905435d8b49b6/html5/thumbnails/24.jpg)
Exceptions
![Page 25: Clean and Quality Unit Tests](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f80f6b4c905435d8b49b6/html5/thumbnails/25.jpg)
![Page 26: Clean and Quality Unit Tests](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f80f6b4c905435d8b49b6/html5/thumbnails/26.jpg)
![Page 27: Clean and Quality Unit Tests](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f80f6b4c905435d8b49b6/html5/thumbnails/27.jpg)
![Page 28: Clean and Quality Unit Tests](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f80f6b4c905435d8b49b6/html5/thumbnails/28.jpg)
![Page 29: Clean and Quality Unit Tests](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f80f6b4c905435d8b49b6/html5/thumbnails/29.jpg)
![Page 30: Clean and Quality Unit Tests](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f80f6b4c905435d8b49b6/html5/thumbnails/30.jpg)
![Page 31: Clean and Quality Unit Tests](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f80f6b4c905435d8b49b6/html5/thumbnails/31.jpg)
![Page 32: Clean and Quality Unit Tests](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f80f6b4c905435d8b49b6/html5/thumbnails/32.jpg)
![Page 33: Clean and Quality Unit Tests](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f80f6b4c905435d8b49b6/html5/thumbnails/33.jpg)
![Page 34: Clean and Quality Unit Tests](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f80f6b4c905435d8b49b6/html5/thumbnails/34.jpg)
![Page 35: Clean and Quality Unit Tests](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f80f6b4c905435d8b49b6/html5/thumbnails/35.jpg)
![Page 36: Clean and Quality Unit Tests](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f80f6b4c905435d8b49b6/html5/thumbnails/36.jpg)
![Page 37: Clean and Quality Unit Tests](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f80f6b4c905435d8b49b6/html5/thumbnails/37.jpg)
Test Doubles
![Page 38: Clean and Quality Unit Tests](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f80f6b4c905435d8b49b6/html5/thumbnails/38.jpg)
![Page 39: Clean and Quality Unit Tests](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f80f6b4c905435d8b49b6/html5/thumbnails/39.jpg)
![Page 40: Clean and Quality Unit Tests](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f80f6b4c905435d8b49b6/html5/thumbnails/40.jpg)
![Page 41: Clean and Quality Unit Tests](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f80f6b4c905435d8b49b6/html5/thumbnails/41.jpg)
How does getMock() really work?
• Does Configuration class exist?
• Create Mock_Configuration_123abc class extends Configuration class
• Create instance of that class
• Return instance
![Page 42: Clean and Quality Unit Tests](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f80f6b4c905435d8b49b6/html5/thumbnails/42.jpg)
How does getMock() really work?
• Does Configuration class exist?
• Create Mock_Configuration_123abc class extends Configuration class
• Create instance of that class
• Return instance
• Create Configuration class
![Page 43: Clean and Quality Unit Tests](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f80f6b4c905435d8b49b6/html5/thumbnails/43.jpg)
![Page 44: Clean and Quality Unit Tests](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f80f6b4c905435d8b49b6/html5/thumbnails/44.jpg)
![Page 45: Clean and Quality Unit Tests](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f80f6b4c905435d8b49b6/html5/thumbnails/45.jpg)
![Page 46: Clean and Quality Unit Tests](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f80f6b4c905435d8b49b6/html5/thumbnails/46.jpg)
![Page 47: Clean and Quality Unit Tests](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f80f6b4c905435d8b49b6/html5/thumbnails/47.jpg)
![Page 48: Clean and Quality Unit Tests](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f80f6b4c905435d8b49b6/html5/thumbnails/48.jpg)
![Page 49: Clean and Quality Unit Tests](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f80f6b4c905435d8b49b6/html5/thumbnails/49.jpg)
![Page 50: Clean and Quality Unit Tests](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f80f6b4c905435d8b49b6/html5/thumbnails/50.jpg)
![Page 51: Clean and Quality Unit Tests](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f80f6b4c905435d8b49b6/html5/thumbnails/51.jpg)
![Page 52: Clean and Quality Unit Tests](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f80f6b4c905435d8b49b6/html5/thumbnails/52.jpg)
![Page 53: Clean and Quality Unit Tests](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f80f6b4c905435d8b49b6/html5/thumbnails/53.jpg)
![Page 54: Clean and Quality Unit Tests](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f80f6b4c905435d8b49b6/html5/thumbnails/54.jpg)
![Page 55: Clean and Quality Unit Tests](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f80f6b4c905435d8b49b6/html5/thumbnails/55.jpg)
Stubs provide canned answers to calls made during the test
"Mocks Aren’t Stubs" Martin Fowler
![Page 56: Clean and Quality Unit Tests](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f80f6b4c905435d8b49b6/html5/thumbnails/56.jpg)
Mocks are objects pre-programmed with expectations which form a specification of the calls they are expected to receive
"Mocks Aren’t Stubs" Martin Fowler
![Page 57: Clean and Quality Unit Tests](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f80f6b4c905435d8b49b6/html5/thumbnails/57.jpg)
![Page 58: Clean and Quality Unit Tests](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f80f6b4c905435d8b49b6/html5/thumbnails/58.jpg)
![Page 59: Clean and Quality Unit Tests](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f80f6b4c905435d8b49b6/html5/thumbnails/59.jpg)
![Page 60: Clean and Quality Unit Tests](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f80f6b4c905435d8b49b6/html5/thumbnails/60.jpg)
![Page 61: Clean and Quality Unit Tests](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f80f6b4c905435d8b49b6/html5/thumbnails/61.jpg)
![Page 62: Clean and Quality Unit Tests](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f80f6b4c905435d8b49b6/html5/thumbnails/62.jpg)
![Page 63: Clean and Quality Unit Tests](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f80f6b4c905435d8b49b6/html5/thumbnails/63.jpg)
![Page 64: Clean and Quality Unit Tests](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f80f6b4c905435d8b49b6/html5/thumbnails/64.jpg)
![Page 65: Clean and Quality Unit Tests](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f80f6b4c905435d8b49b6/html5/thumbnails/65.jpg)
![Page 66: Clean and Quality Unit Tests](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f80f6b4c905435d8b49b6/html5/thumbnails/66.jpg)
![Page 67: Clean and Quality Unit Tests](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f80f6b4c905435d8b49b6/html5/thumbnails/67.jpg)
![Page 68: Clean and Quality Unit Tests](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f80f6b4c905435d8b49b6/html5/thumbnails/68.jpg)
![Page 69: Clean and Quality Unit Tests](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f80f6b4c905435d8b49b6/html5/thumbnails/69.jpg)
Stubbing collections
![Page 70: Clean and Quality Unit Tests](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f80f6b4c905435d8b49b6/html5/thumbnails/70.jpg)
![Page 71: Clean and Quality Unit Tests](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f80f6b4c905435d8b49b6/html5/thumbnails/71.jpg)
![Page 72: Clean and Quality Unit Tests](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f80f6b4c905435d8b49b6/html5/thumbnails/72.jpg)
Arrange Act
Assert
![Page 73: Clean and Quality Unit Tests](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f80f6b4c905435d8b49b6/html5/thumbnails/73.jpg)
![Page 74: Clean and Quality Unit Tests](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f80f6b4c905435d8b49b6/html5/thumbnails/74.jpg)
![Page 75: Clean and Quality Unit Tests](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f80f6b4c905435d8b49b6/html5/thumbnails/75.jpg)
![Page 76: Clean and Quality Unit Tests](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f80f6b4c905435d8b49b6/html5/thumbnails/76.jpg)
It’s all about readability
![Page 77: Clean and Quality Unit Tests](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f80f6b4c905435d8b49b6/html5/thumbnails/77.jpg)
![Page 78: Clean and Quality Unit Tests](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f80f6b4c905435d8b49b6/html5/thumbnails/78.jpg)
![Page 79: Clean and Quality Unit Tests](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f80f6b4c905435d8b49b6/html5/thumbnails/79.jpg)
What’s next?
![Page 80: Clean and Quality Unit Tests](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f80f6b4c905435d8b49b6/html5/thumbnails/80.jpg)
![Page 81: Clean and Quality Unit Tests](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f80f6b4c905435d8b49b6/html5/thumbnails/81.jpg)
![Page 82: Clean and Quality Unit Tests](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f80f6b4c905435d8b49b6/html5/thumbnails/82.jpg)
Questions?
Wojtek Zieliński
@codecleaner