
- 403 pages
- English
- ePUB (mobile friendly)
- Available on iOS & Android
Practical Test-Driven Development using C# 7
About this book
Develop applications for the real world with a thorough software testing approachAbout This Book• Develop a thorough understanding of TDD and how it can help you develop simpler applications with no defects using C# and JavaScript• Adapt to the mindset of writing tests before code by incorporating business goals, code manageability, and other factors• Make all your software units and modules pass tests by analyzing failed tests and refactoring code as and when requiredWho This Book Is ForThis book is for software developers with a basic knowledge of Test Driven Development (TDD) who want a thorough understanding of how TDD can benefit them and the applications they produce. The examples in this book are in C#, and you will need a basic understanding of C# to work through these examples.What You Will Learn• The core concepts of TDD• Testing in action with a real-world case study in C# and JavaScript using React• Writing proper Unit Tests and testable code for your application• Using different types of test double such as stubs, spies, and mocks • Growing an application guided by tests• Exploring new developments on a green-field application• Mitigating the problems associated with writing tests for legacy applications • Modifying a legacy application to make it testableIn DetailTest-Driven Development (TDD) is a methodology that helps you to write as little as code as possible to satisfy software requirements, and ensures that what you've written does what it's supposed to do. If you're looking for a practical resource on Test-Driven Development this is the book for you. You've found a practical end-to-end guide that will help you implement Test-Driven Techniques for your software development projects.You will learn from industry standard patterns and practices, and shift from a conventional approach to a modern and efficient software testing approach in C# and JavaScript. This book starts with the basics of TDD and the components of a simple unit test. Then we look at setting up the testing framework so that you can easily run your tests in your development environment. You will then see the importance of defining and testing boundaries, abstracting away third-party code (including the.NET Framework), and working with different types of test double such as spies, mocks, and fakes.Moving on, you will learn how to think like a TDD developer when it comes to application development. Next, you'll focus on writing tests for new/changing requirements and covering newly discovered bugs, along with how to test JavaScript applications and perform integration testing. You'll also learn how to identify code that is inherently un-testable, and identify some of the major problems with legacy applications that weren't written with testability in mind. By the end of the book, you'll have all the TDD skills you'll need and you'll be able to re-enter the world as a TDD expert!Style and approachA practical step-by-step approach with real-world case studies.
Frequently asked questions
- Essential is ideal for learners and professionals who enjoy exploring a wide range of subjects. Access the Essential Library with 800,000+ trusted titles and best-sellers across business, personal growth, and the humanities. Includes unlimited reading time and Standard Read Aloud voice.
- Complete: Perfect for advanced learners and researchers needing full, unrestricted access. Unlock 1.4M+ books across hundreds of subjects, including academic and specialized titles. The Complete Plan also includes advanced features like Premium Read Aloud and Research Assistant.
Please note we cannot support devices running on iOS 13 and Android 7 or earlier. Learn more about using the app.
Information
Abstract Away Problems
- Abstracting a Gravatar service
- Extending the repository pattern
- Using a generic repository and Entity Framework
Abstracting away problems
Gravatar
- s: The requested size of the image; by default, this is 80 x 80 pixel
- d: The default image if none is found; options include 404, mm (mystery-man) , identicon, and so on
- f: Force default; always return the default icon, even if an image is found
- r: Rating; users can label their image as G, PG, R, and X
Starting with an interface
public interface IGravatarService
{
string GetGravatar(string emailAddress);
string GetGravatar(string emailAddress, int size);
string GetGravatar(string emailAddress, int size, string rating);
string GetGravatar(string emailAddress, int size, string rating,
string imageType);
}
Implementing a test version of the interface
[Fact]
public void ItTakesGravatarService()
{
// Arrange
var fakeGravatarService = new FakeGravatarService();
var service = new SpeakerService(_fakeRepository, fakeGravatarService);
}
public interface IGravatarService
{
}
public SpeakerService(IRepository repository, IGravatarService gravatarService)
{
_repository = repository;
}
[Fact]
public void ItCallsGravatarService()
{
// Arrange
var expectedSpeaker = SpeakerFactory.Create(_fakeRepository);
var service = new SpeakerService(_fakeRepository, _fakeGravatarService);
// Act
service.Get(expectedSpeaker.Id);
// Assert
Assert.True(_fakeGravatarService.GetGravatarCalled);
}
public interface IGravatarService
{
void GetGravatar();
}
public class FakeGravatarService : IGravatarService
{
public bool GetGravatarCalled { get; set; }
public void GetGravatar()
{
GetGravatarCalled = true;
}
}
Table of contents
- Title Page
- Copyright and Credits
- Packt Upsell
- Foreword
- Contributors
- Preface
- Why TDD is Important
- Setting Up the .NET Test Environment
- Setting Up a JavaScript Environment
- What to Know Before Getting Started
- Tabula Rasa – Approaching an Application with TDD in Mind
- Approaching the Problem
- Test-Driving C# Applications
- Abstract Away Problems
- Testing JavaScript Applications
- Exploring Integrations
- Changes in Requirements
- The Legacy Problem
- Unraveling a Mess
- A Better Foot Forward
- Other Books You May Enjoy