What do you do when you need to work with some really bad code? It seems like a no-win situation: whether you rewrite it, do a ""refactoring sprint,"" or just live with it, you have to pay a big cost. But these aren't the only options. There's a way to get control of your code so that you can make whatever improvements you need in a low-stress, low-cost way. To explain how, this talk is split into two parts. In the first part we'll look at a messy React Native component and see how effortless it is to make improvements to the code if you have comprehensive tests. In the second part we'll tackle that big ""if:"" how in the world can you get comprehensive tests like that? By the end of this talk you'll have the information to decide if this approach to testing and refactoring will help your project, and if so, you'll have next steps to hone your skills in this approach.
So you’ve gotten Detox set up to test your React Native application. Good work! But you aren’t done yet: there are still a lot of questions you need to answer. How many tests do you write? When and where do you run them? How do you ensure there is test data available? What do you do about parts of your app that use mobile APIs that are difficult to automate? You could sink a lot of effort into these things—is the payoff worth it?
In this three-hour workshop we’ll address these questions by discussing how to integrate Detox into your development workflow. You’ll walk away with the skills and information you need to make Detox testing a natural and productive part of day-to-day development.
-
We'll cover:
- Deciding what to test with Detox vs React Native Testing Library vs manual testing
- Setting up a fake API layer for testing
- Getting Detox running on CI on GitHub Actions for free
- Deciding how much of your app to test with Detox: a sliding scale
- Fitting Detox into you local development workflow
React Testing Library is a great framework for React component tests because there are a lot of questions it answers for you, so you don’t need to worry about those questions. But that doesn’t mean testing is easy. There are still a lot of questions you have to figure out for yourself: How many component tests should you write vs end-to-end tests or lower-level unit tests? How can you test a certain line of code that is tricky to test? And what in the world are you supposed to do about that persistent act() warning?
In this three-hour workshop we’ll introduce React Testing Library along with a mental model for how to think about designing your component tests. This mental model will help you see how to test each bit of logic, whether or not to mock dependencies, and will help improve the design of your components. You’ll walk away with the tools, techniques, and principles you need to implement low-cost, high-value component tests. Table of contents
- The different kinds of React application tests, and where component tests fit in
- A mental model for thinking about the inputs and outputs of the components you test
- Options for selecting DOM elements to verify and interact with them
- The value of mocks and why they shouldn’t be avoided
- The challenges with asynchrony in RTL tests and how to handle them
- Learn a mental model for thinking about testing that will give you confidence deciding what and how to test
- Get hands-on experience with some of the most popular React Native testing tools
- Find solutions to common React Native testing obstacles and challenges
Designing Effective Tests with React Testing Library - React Day Berlin 2022Josh Justice
React Testing Library is a great framework for React component tests because there are a lot of questions it answers for you, so you don’t need to worry about those questions. But that doesn’t mean testing is easy. There are still a lot of questions you have to figure out for yourself: How many component tests should you write vs end-to-end tests or lower-level unit tests? How can you test a certain line of code that is tricky to test? And what in the world are you supposed to do about that persistent act() warning?
In this three-hour workshop we’ll introduce React Testing Library along with a mental model for how to think about designing your component tests. This mental model will help you see how to test each bit of logic, whether or not to mock dependencies, and will help improve the design of your components. You’ll walk away with the tools, techniques, and principles you need to implement low-cost, high-value component tests. Table of contents
- The different kinds of React application tests, and where component tests fit in
- A mental model for thinking about the inputs and outputs of the components you test
- Options for selecting DOM elements to verify and interact with them
- The value of mocks and why they shouldn’t be avoided
- The challenges with asynchrony in RTL tests and how to handle them
Building for Mobile and Web with Expo - React Day Berlin 2022Josh Justice
We know that React is for the web and React Native is for Android and iOS. But have you heard of react-native-web—for writing an app for Android, iOS, and the web in one codebase? Just like React Native abstracts away the details of iOS and Android, React Native Web extracts away the details of the browser as well. This opens up the possibility of even more code sharing across platforms.
In this workshop you’ll walk through setting up the skeleton for a React Native Web app that works great and looks awesome. You can use the resulting codebase as a foundation to build whatever app you like on top of it, using the React paradigms and many JavaScript libraries you’re used to. You might be surprised how many types of app don’t really require a separate mobile and web codebase!
Are you satisfied with your test suites? If you said no, you’re not alone—most developers aren’t. And testing in React Native is harder than on most platforms. How can you write JavaScript tests when the JS and native code are so intertwined? And what in the world are you supposed to do about that persistent act() warning? Faced with these challenges, some teams are never able to make any progress testing their React Native app, and others end up with tests that don’t seem to help and only take extra time to maintain.
But it doesn’t have to be this way. React Native Testing Library (RNTL) is a great library for component testing, and with the right mental model you can use it to implement tests that are low-cost and high-value. In this three-hour workshop you’ll learn the tools, techniques, and principles you need to implement tests that will help you ship your React Native app with confidence. You’ll walk away with a clear vision for the goal of your component tests and with techniques that will help you address any obstacle that gets in the way of that goal.
Building for Mobile and Web with Expo - React Advanced London 2022Josh Justice
We know that React is for the web and React Native is for Android and iOS. But have you heard of react-native-web—for writing an app for Android, iOS, and the web in one codebase? Just like React Native abstracts away the details of iOS and Android, React Native Web extracts away the details of the browser as well. This opens up the possibility of even more code sharing across platforms.
In this workshop you’ll walk through setting up the skeleton for a React Native Web app that works great and looks awesome. You can use the resulting codebase as a foundation to build whatever app you like on top of it, using the React paradigms and many JavaScript libraries you’re used to. You might be surprised how many types of app don’t really require a separate mobile and web codebase!
Sustainable Learning - ReactATL Jan 2022Josh Justice
How do you learn to program? How do you *keep* learning to program, as new languages, libraries, and platforms are released? The amount of information out there can be overwhelming, especially in React. Whether you're just out of a Bootcamp, switching technologies, or just trying to keep up, it can feel impossible to find the time to learn.
In this talk, Josh Justice will share an approach to learning that he stumbled upon in the process of making two major technology career shifts within three years. It's a way to avoid mistakes that may be hindering your learning, make the flow of information manageable, solidify your skills, and feel motivated all along the way. Everyone's background and life circumstances are different, but this talk will offer tools and ideas that you can apply in a way that works for you.
So you’ve gotten Detox set up to test your React Native application. Good work! But you aren’t done yet: there are still a lot of questions you need to answer. How many tests do you write? When and where do you run them? How do you ensure there is test data available? What do you do about parts of your app that use mobile APIs that are difficult to automate? You could sink a lot of effort into these things—is the payoff worth it?
In this three-hour workshop we’ll address these questions by discussing how to integrate Detox into your development workflow. You’ll walk away with the skills and information you need to make Detox testing a natural and productive part of day-to-day development.
-
We'll cover:
- Deciding what to test with Detox vs React Native Testing Library vs manual testing
- Setting up a fake API layer for testing
- Getting Detox running on CI on GitHub Actions for free
- Deciding how much of your app to test with Detox: a sliding scale
- Fitting Detox into you local development workflow
React Testing Library is a great framework for React component tests because there are a lot of questions it answers for you, so you don’t need to worry about those questions. But that doesn’t mean testing is easy. There are still a lot of questions you have to figure out for yourself: How many component tests should you write vs end-to-end tests or lower-level unit tests? How can you test a certain line of code that is tricky to test? And what in the world are you supposed to do about that persistent act() warning?
In this three-hour workshop we’ll introduce React Testing Library along with a mental model for how to think about designing your component tests. This mental model will help you see how to test each bit of logic, whether or not to mock dependencies, and will help improve the design of your components. You’ll walk away with the tools, techniques, and principles you need to implement low-cost, high-value component tests. Table of contents
- The different kinds of React application tests, and where component tests fit in
- A mental model for thinking about the inputs and outputs of the components you test
- Options for selecting DOM elements to verify and interact with them
- The value of mocks and why they shouldn’t be avoided
- The challenges with asynchrony in RTL tests and how to handle them
- Learn a mental model for thinking about testing that will give you confidence deciding what and how to test
- Get hands-on experience with some of the most popular React Native testing tools
- Find solutions to common React Native testing obstacles and challenges
Designing Effective Tests with React Testing Library - React Day Berlin 2022Josh Justice
React Testing Library is a great framework for React component tests because there are a lot of questions it answers for you, so you don’t need to worry about those questions. But that doesn’t mean testing is easy. There are still a lot of questions you have to figure out for yourself: How many component tests should you write vs end-to-end tests or lower-level unit tests? How can you test a certain line of code that is tricky to test? And what in the world are you supposed to do about that persistent act() warning?
In this three-hour workshop we’ll introduce React Testing Library along with a mental model for how to think about designing your component tests. This mental model will help you see how to test each bit of logic, whether or not to mock dependencies, and will help improve the design of your components. You’ll walk away with the tools, techniques, and principles you need to implement low-cost, high-value component tests. Table of contents
- The different kinds of React application tests, and where component tests fit in
- A mental model for thinking about the inputs and outputs of the components you test
- Options for selecting DOM elements to verify and interact with them
- The value of mocks and why they shouldn’t be avoided
- The challenges with asynchrony in RTL tests and how to handle them
Building for Mobile and Web with Expo - React Day Berlin 2022Josh Justice
We know that React is for the web and React Native is for Android and iOS. But have you heard of react-native-web—for writing an app for Android, iOS, and the web in one codebase? Just like React Native abstracts away the details of iOS and Android, React Native Web extracts away the details of the browser as well. This opens up the possibility of even more code sharing across platforms.
In this workshop you’ll walk through setting up the skeleton for a React Native Web app that works great and looks awesome. You can use the resulting codebase as a foundation to build whatever app you like on top of it, using the React paradigms and many JavaScript libraries you’re used to. You might be surprised how many types of app don’t really require a separate mobile and web codebase!
Are you satisfied with your test suites? If you said no, you’re not alone—most developers aren’t. And testing in React Native is harder than on most platforms. How can you write JavaScript tests when the JS and native code are so intertwined? And what in the world are you supposed to do about that persistent act() warning? Faced with these challenges, some teams are never able to make any progress testing their React Native app, and others end up with tests that don’t seem to help and only take extra time to maintain.
But it doesn’t have to be this way. React Native Testing Library (RNTL) is a great library for component testing, and with the right mental model you can use it to implement tests that are low-cost and high-value. In this three-hour workshop you’ll learn the tools, techniques, and principles you need to implement tests that will help you ship your React Native app with confidence. You’ll walk away with a clear vision for the goal of your component tests and with techniques that will help you address any obstacle that gets in the way of that goal.
Building for Mobile and Web with Expo - React Advanced London 2022Josh Justice
We know that React is for the web and React Native is for Android and iOS. But have you heard of react-native-web—for writing an app for Android, iOS, and the web in one codebase? Just like React Native abstracts away the details of iOS and Android, React Native Web extracts away the details of the browser as well. This opens up the possibility of even more code sharing across platforms.
In this workshop you’ll walk through setting up the skeleton for a React Native Web app that works great and looks awesome. You can use the resulting codebase as a foundation to build whatever app you like on top of it, using the React paradigms and many JavaScript libraries you’re used to. You might be surprised how many types of app don’t really require a separate mobile and web codebase!
Sustainable Learning - ReactATL Jan 2022Josh Justice
How do you learn to program? How do you *keep* learning to program, as new languages, libraries, and platforms are released? The amount of information out there can be overwhelming, especially in React. Whether you're just out of a Bootcamp, switching technologies, or just trying to keep up, it can feel impossible to find the time to learn.
In this talk, Josh Justice will share an approach to learning that he stumbled upon in the process of making two major technology career shifts within three years. It's a way to avoid mistakes that may be hindering your learning, make the flow of information manageable, solidify your skills, and feel motivated all along the way. Everyone's background and life circumstances are different, but this talk will offer tools and ideas that you can apply in a way that works for you.
Building an App for Mobile and Web with ExpoJosh Justice
react-native-web is a library that allows you to take the same React Native codebase you deploy to Android and iOS and deploy it to the web as well. The recommended way to get started with react-native-web is with Expo, which includes web support.
To learn more about react-native-web, let's look at an open-source app that was recently released on iOS and the web. We'll look at ways to set up URLs, responsive design, and dark theme, cases where you need different code for the web, and testing options that are unlocked by the web. We'll also talk about how to choose between React, React Native, and Expo for your next project.
User-Modifiable Software: Smalltalk and HyperCardJosh Justice
When software doesn’t fully meet the needs of its user, what are the user’s options? For commercial software, the user can lobby the manufacturer for the feature they need—but the manufacturer may not respond. For open-source software, the user can fork the repo and add the feature themselves—but this requires becoming a developer on the platform the app is written in.
But there have been better options in the past history of computing: software platforms that allow users to inspect the code of their software and modify it in the same environment the software runs in. With these software platforms, anyone using the application already has all the tooling they need to see how the application works and modify it. Platforms like this have played a significant role in the advancement of personal computing; can they do so again? This talk presents two such user-modifiable software systems: Smalltalk and HyperCard. Based on research into these systems’ origins, properties, and impact, it offers seven insights from them that can be applied to current and future user-modifiable systems.
There are a lot of talks about why it’s important to make your app accessible to non-sighted users and others, but it’s hard to know how to get started. This talk walks through how to read the official web accessibility standards, three automated tools that can help, and two manual testing approaches you can take. It should equip you to make major strides toward accessibility.
JavaScript test tooling has advanced a lot in the last few years, but tooling can’t solve everything—we still have decisions to make about how to optimally set up our tests. It would be great if we could learn from experienced testers who came before us, but it can be difficult to follow writing about testing in a programming language we aren’t familiar with.
Luckily, there’s one book in particular that has a lot of language-agnostic testing wisdom to share: xUnit Test Patterns. We’ll walk through some of the “test smells” it describes and see examples of how they commonly arise in JavaScript, then we’ll apply the principles from the book to solve these problems. You’ll walk away from this session with more tools in your tool belt to solve testing problems, and clearer language to talk about the tools you already have.
Test-Driven Development in Vue with CypressJosh Justice
As your Vue app grows, are you slowed down by fragile or difficult-to-understand code? Test-Driven Development can help! It makes your code simpler, easier to refactor, and quicker to ship. We'll walk through a demonstration of using Cypress tests with Vue CLI 3 to drive your code for a higher-quality codebase.
Test-Driven Development in React with CypressJosh Justice
As your React app grows, are you slowed down by fragile or difficult-to-understand code? Test-Driven Development can help! It makes your code simpler, easier to refactor, and quicker to ship. We'll walk through a demonstration of using Cypress tests to drive your code for a higher-quality codebase.
Newbie's Guide to Contributing to BabelJosh Justice
Babel is a tool many JavaScript developers use to enable writing modern language features on all platforms. It’s incredibly useful, but for most of us it feels like a mysterious black box. We just drop in preset-env and we’re set! It’s great that it’s so easy to get started with Babel, but there’s also value in understanding how it works.
I got to spend a week contributing to the upcoming private class fields feature for Babel. During that week, I went from knowing nothing about how Babel works to being able to fix some failing tests and implement new edge cases. As part of this process, I had to get up to speed quickly on Babel’s plugin and transformation systems. And I’d like to share what I learned with you.
Outside-in Testing in Vue with CypressJosh Justice
As apps grow, development tends to slow down due to fragile or difficult-to-understand code. Test-Driven Development can help! It can make your code simpler, easier to refactor, and quicker to ship. We’ll walk through a demonstration of using Cypress tests to drive your code for a higher-quality codebase.
Building an App for Mobile and Web with ExpoJosh Justice
react-native-web is a library that allows you to take the same React Native codebase you deploy to Android and iOS and deploy it to the web as well. The recommended way to get started with react-native-web is with Expo, which includes web support.
To learn more about react-native-web, let's look at an open-source app that was recently released on iOS and the web. We'll look at ways to set up URLs, responsive design, and dark theme, cases where you need different code for the web, and testing options that are unlocked by the web. We'll also talk about how to choose between React, React Native, and Expo for your next project.
User-Modifiable Software: Smalltalk and HyperCardJosh Justice
When software doesn’t fully meet the needs of its user, what are the user’s options? For commercial software, the user can lobby the manufacturer for the feature they need—but the manufacturer may not respond. For open-source software, the user can fork the repo and add the feature themselves—but this requires becoming a developer on the platform the app is written in.
But there have been better options in the past history of computing: software platforms that allow users to inspect the code of their software and modify it in the same environment the software runs in. With these software platforms, anyone using the application already has all the tooling they need to see how the application works and modify it. Platforms like this have played a significant role in the advancement of personal computing; can they do so again? This talk presents two such user-modifiable software systems: Smalltalk and HyperCard. Based on research into these systems’ origins, properties, and impact, it offers seven insights from them that can be applied to current and future user-modifiable systems.
There are a lot of talks about why it’s important to make your app accessible to non-sighted users and others, but it’s hard to know how to get started. This talk walks through how to read the official web accessibility standards, three automated tools that can help, and two manual testing approaches you can take. It should equip you to make major strides toward accessibility.
JavaScript test tooling has advanced a lot in the last few years, but tooling can’t solve everything—we still have decisions to make about how to optimally set up our tests. It would be great if we could learn from experienced testers who came before us, but it can be difficult to follow writing about testing in a programming language we aren’t familiar with.
Luckily, there’s one book in particular that has a lot of language-agnostic testing wisdom to share: xUnit Test Patterns. We’ll walk through some of the “test smells” it describes and see examples of how they commonly arise in JavaScript, then we’ll apply the principles from the book to solve these problems. You’ll walk away from this session with more tools in your tool belt to solve testing problems, and clearer language to talk about the tools you already have.
Test-Driven Development in Vue with CypressJosh Justice
As your Vue app grows, are you slowed down by fragile or difficult-to-understand code? Test-Driven Development can help! It makes your code simpler, easier to refactor, and quicker to ship. We'll walk through a demonstration of using Cypress tests with Vue CLI 3 to drive your code for a higher-quality codebase.
Test-Driven Development in React with CypressJosh Justice
As your React app grows, are you slowed down by fragile or difficult-to-understand code? Test-Driven Development can help! It makes your code simpler, easier to refactor, and quicker to ship. We'll walk through a demonstration of using Cypress tests to drive your code for a higher-quality codebase.
Newbie's Guide to Contributing to BabelJosh Justice
Babel is a tool many JavaScript developers use to enable writing modern language features on all platforms. It’s incredibly useful, but for most of us it feels like a mysterious black box. We just drop in preset-env and we’re set! It’s great that it’s so easy to get started with Babel, but there’s also value in understanding how it works.
I got to spend a week contributing to the upcoming private class fields feature for Babel. During that week, I went from knowing nothing about how Babel works to being able to fix some failing tests and implement new edge cases. As part of this process, I had to get up to speed quickly on Babel’s plugin and transformation systems. And I’d like to share what I learned with you.
Outside-in Testing in Vue with CypressJosh Justice
As apps grow, development tends to slow down due to fragile or difficult-to-understand code. Test-Driven Development can help! It can make your code simpler, easier to refactor, and quicker to ship. We’ll walk through a demonstration of using Cypress tests to drive your code for a higher-quality codebase.
Getting Better All the Time: How to Escape Bad Code
1. Getting Better All the Time
How to Escape Bad Code
Josh Justice
Big Nerd Ranch
Getting Better All the Time: How to Escape Bad Code - React Native EU 2022 - Josh Justice - reactnativetesting.io/gettingbetter
2. I have to work with
some bad code.
Getting Better All the Time: How to Escape Bad Code - React Native EU 2022 - Josh Justice - reactnativetesting.io/gettingbetter
3. (to the code)
Getting Better All the Time: How to Escape Bad Code - React Native EU 2022 - Josh Justice - reactnativetesting.io/gettingbetter
4. What do I do about
bad code?
Getting Better All the Time: How to Escape Bad Code - React Native EU 2022 - Josh Justice - reactnativetesting.io/gettingbetter
5. What do you do about
bad code?
Getting Better All the Time: How to Escape Bad Code - React Native EU 2022 - Josh Justice - reactnativetesting.io/gettingbetter
6. Work around bad code?
• Development will be slow
• Workarounds mean the next change will be even slower
Getting Better All the Time: How to Escape Bad Code - React Native EU 2022 - Josh Justice - reactnativetesting.io/gettingbetter
7. Rewrite bad code?
• A big chunk of work that doesn't deliver features to the user and
that can't be interrupted
• If I break it, I own it
Getting Better All the Time: How to Escape Bad Code - React Native EU 2022 - Josh Justice - reactnativetesting.io/gettingbetter
8. So what do we do about
bad code?
Getting Better All the Time: How to Escape Bad Code - React Native EU 2022 - Josh Justice - reactnativetesting.io/gettingbetter
9. Wait…
Getting Better All the Time: How to Escape Bad Code - React Native EU 2022 - Josh Justice - reactnativetesting.io/gettingbetter
10. Wait…
I just remembered something…
Getting Better All the Time: How to Escape Bad Code - React Native EU 2022 - Josh Justice - reactnativetesting.io/gettingbetter
11. Wait…
I just remembered something…
…that changes everything
Getting Better All the Time: How to Escape Bad Code - React Native EU 2022 - Josh Justice - reactnativetesting.io/gettingbetter
12. This component has
thorough tests!
Getting Better All the Time: How to Escape Bad Code - React Native EU 2022 - Josh Justice - reactnativetesting.io/gettingbetter
13. I can make it better
as I go.
Getting Better All the Time: How to Escape Bad Code - React Native EU 2022 - Josh Justice - reactnativetesting.io/gettingbetter
14. (to the code)
Getting Better All the Time: How to Escape Bad Code - React Native EU 2022 - Josh Justice - reactnativetesting.io/gettingbetter
15. That was pretty fun!
Getting Better All the Time: How to Escape Bad Code - React Native EU 2022 - Josh Justice - reactnativetesting.io/gettingbetter
16. Refactoring
Getting Better All the Time: How to Escape Bad Code - React Native EU 2022 - Josh Justice - reactnativetesting.io/gettingbetter
17. Refactoring
Small changes that improve the
arrangement of the code without
changing its functionality.
Getting Better All the Time: How to Escape Bad Code - React Native EU 2022 - Josh Justice - reactnativetesting.io/gettingbetter
18. Why Small Changes?
• Value: making the improvements that pay off right away
• Delivery: code is shippable after each refactoring
Getting Better All the Time: How to Escape Bad Code - React Native EU 2022 - Josh Justice - reactnativetesting.io/gettingbetter
19. What to do about bad code?
Make it better all the
time.
Getting Better All the Time: How to Escape Bad Code - React Native EU 2022 - Josh Justice - reactnativetesting.io/gettingbetter
20. What to do about bad code?
Make it better all the
time, if…
Getting Better All the Time: How to Escape Bad Code - React Native EU 2022 - Josh Justice - reactnativetesting.io/gettingbetter
21. What to do about bad code?
Make it better all the
time
IF…
Getting Better All the Time: How to Escape Bad Code - React Native EU 2022 - Josh Justice - reactnativetesting.io/gettingbetter
22. Make it better all the time, if…
you have
comprehensive tests
you can trust.
Getting Better All the Time: How to Escape Bad Code - React Native EU 2022 - Josh Justice - reactnativetesting.io/gettingbetter
23. "Trust our tests?"
Getting Better All the Time: How to Escape Bad Code - React Native EU 2022 - Josh Justice - reactnativetesting.io/gettingbetter
24. "Trust our tests?"
"I can hardly stand our
tests!"
Getting Better All the Time: How to Escape Bad Code - React Native EU 2022 - Josh Justice - reactnativetesting.io/gettingbetter
25. Is it even possible to
get comprehensive
tests you can trust?
Getting Better All the Time: How to Escape Bad Code - React Native EU 2022 - Josh Justice - reactnativetesting.io/gettingbetter
26. Test-Driven Development (TDD)
1. Write a test and see it fail ("red")
2. Write just enough code to make the test pass ("green")
3. Refactor
Getting Better All the Time: How to Escape Bad Code - React Native EU 2022 - Josh Justice - reactnativetesting.io/gettingbetter
27. (to the code)
Getting Better All the Time: How to Escape Bad Code - React Native EU 2022 - Josh Justice - reactnativetesting.io/gettingbetter
28. reactnativetesting.io/gettingbetter
• The rest of the TDD sequence
• More refactors
• Pointers to more resources on TDD in React Native
Getting Better All the Time: How to Escape Bad Code - React Native EU 2022 - Josh Justice - reactnativetesting.io/gettingbetter
29. The biggest benefit of TDD:
TDD equips you to
make your code better
all the time.
Getting Better All the Time: How to Escape Bad Code - React Native EU 2022 - Josh Justice - reactnativetesting.io/gettingbetter
30. Write whichever kinds
of tests give you
confidence to make it
better all the time.
Getting Better All the Time: How to Escape Bad Code - React Native EU 2022 - Josh Justice - reactnativetesting.io/gettingbetter
31. "TDD is too much work."
Getting Better All the Time: How to Escape Bad Code - React Native EU 2022 - Josh Justice - reactnativetesting.io/gettingbetter
32. Know what else is a lot of work?
Living with bad code
forever.
Getting Better All the Time: How to Escape Bad Code - React Native EU 2022 - Josh Justice - reactnativetesting.io/gettingbetter
33. You're going to deal with bad code
somehow.
You don't want to work around it.
You often can't rewrite it.
Getting Better All the Time: How to Escape Bad Code - React Native EU 2022 - Josh Justice - reactnativetesting.io/gettingbetter
34. The way I know to escape bad code:
Make it better all the time.
Getting Better All the Time: How to Escape Bad Code - React Native EU 2022 - Josh Justice - reactnativetesting.io/gettingbetter
35. Imagine…
Getting Better All the Time: How to Escape Bad Code - React Native EU 2022 - Josh Justice - reactnativetesting.io/gettingbetter
36. Imagine coming into a new codebase
totally confident you
can trust the tests.
Getting Better All the Time: How to Escape Bad Code - React Native EU 2022 - Josh Justice - reactnativetesting.io/gettingbetter
37. TDD
→ great tests
Getting Better All the Time: How to Escape Bad Code - React Native EU 2022 - Josh Justice - reactnativetesting.io/gettingbetter
38. TDD
→ great tests
→ making it better all the time
Getting Better All the Time: How to Escape Bad Code - React Native EU 2022 - Josh Justice - reactnativetesting.io/gettingbetter
39. TDD
→ great tests
→ making it better all the time
→ great code!
Getting Better All the Time: How to Escape Bad Code - React Native EU 2022 - Josh Justice - reactnativetesting.io/gettingbetter
40. About Me
Principal Architect at Big Nerd Ranch
• Mobile app consulting
• Corporate training
Get in touch:
reactnativetesting.io/gettingbetter
Getting Better All the Time: How to Escape Bad Code - React Native EU 2022 - Josh
Justice - reactnativetesting.io/gettingbetter