Fharp Unit Testing
-
Upload
sigma-software -
Category
Software
-
view
44 -
download
1
Transcript of Fharp Unit Testing
![Page 1: Fharp Unit Testing](https://reader035.fdocuments.in/reader035/viewer/2022080216/55c780dcbb61eb45528b4753/html5/thumbnails/1.jpg)
Unit Testing with F#
Sugak Alexandr
![Page 2: Fharp Unit Testing](https://reader035.fdocuments.in/reader035/viewer/2022080216/55c780dcbb61eb45528b4753/html5/thumbnails/2.jpg)
Unit Testing
![Page 3: Fharp Unit Testing](https://reader035.fdocuments.in/reader035/viewer/2022080216/55c780dcbb61eb45528b4753/html5/thumbnails/3.jpg)
Functional design is testable by its
nature
Pure function – always returns the same value given the same input
and has no side-effects
Isolated function – a function which knows nothing about the state of
the external world, except information passed via its arguments
A pure function is isolated
![Page 4: Fharp Unit Testing](https://reader035.fdocuments.in/reader035/viewer/2022080216/55c780dcbb61eb45528b4753/html5/thumbnails/4.jpg)
Assertion, C# way (MSTest)
![Page 5: Fharp Unit Testing](https://reader035.fdocuments.in/reader035/viewer/2022080216/55c780dcbb61eb45528b4753/html5/thumbnails/5.jpg)
Structural Equality
![Page 6: Fharp Unit Testing](https://reader035.fdocuments.in/reader035/viewer/2022080216/55c780dcbb61eb45528b4753/html5/thumbnails/6.jpg)
F# has Structural Equality for:
• Records
• Discriminated Unions
• Arrays
• Lists
![Page 7: Fharp Unit Testing](https://reader035.fdocuments.in/reader035/viewer/2022080216/55c780dcbb61eb45528b4753/html5/thumbnails/7.jpg)
Assertion, F# way (Unquote)
Unquote uses F# quoted expressions to express assertions
and produce detailed error messages
![Page 8: Fharp Unit Testing](https://reader035.fdocuments.in/reader035/viewer/2022080216/55c780dcbb61eb45528b4753/html5/thumbnails/8.jpg)
Isolation, C# way
• Moq
• Rhino Mocks
• Typemock Isolator
• NMock
• NUnit.Mocks
• Microsoft Fakes / Moles
• NSubstitute
• FakeItEasy
![Page 9: Fharp Unit Testing](https://reader035.fdocuments.in/reader035/viewer/2022080216/55c780dcbb61eb45528b4753/html5/thumbnails/9.jpg)
Isolation, C# example
![Page 10: Fharp Unit Testing](https://reader035.fdocuments.in/reader035/viewer/2022080216/55c780dcbb61eb45528b4753/html5/thumbnails/10.jpg)
Isolation, C# example
![Page 11: Fharp Unit Testing](https://reader035.fdocuments.in/reader035/viewer/2022080216/55c780dcbb61eb45528b4753/html5/thumbnails/11.jpg)
Isolation, C# example
![Page 12: Fharp Unit Testing](https://reader035.fdocuments.in/reader035/viewer/2022080216/55c780dcbb61eb45528b4753/html5/thumbnails/12.jpg)
Isolation, F# way
![Page 13: Fharp Unit Testing](https://reader035.fdocuments.in/reader035/viewer/2022080216/55c780dcbb61eb45528b4753/html5/thumbnails/13.jpg)
Unit Testing with F#
• Less mocks
(more stubs)
• Simpler assertions
(unquote)
• No test induced damage
(functions as interfaces)
![Page 14: Fharp Unit Testing](https://reader035.fdocuments.in/reader035/viewer/2022080216/55c780dcbb61eb45528b4753/html5/thumbnails/14.jpg)
DEMO
![Page 15: Fharp Unit Testing](https://reader035.fdocuments.in/reader035/viewer/2022080216/55c780dcbb61eb45528b4753/html5/thumbnails/15.jpg)
Links
• Unquote - https://code.google.com/p/unquote/
• Railway Oriented Programming -
http://fsharpforfunandprofit.com/posts/recipe-part2/
• Mark Seeman’s blog - http://blog.ploeh.dk/
• Mark Seeman’s Pluralsight courses -
http://www.pluralsight.com/author/mark-seemann
(highly recommended!)