daily-email: add 2023-09-07
What's the simplest test to begin with?
This commit is contained in:
parent
3f80df3524
commit
94ae659351
59
src/content/daily-email/2023-09-07.md
Normal file
59
src/content/daily-email/2023-09-07.md
Normal file
|
@ -0,0 +1,59 @@
|
||||||
|
---
|
||||||
|
title: >
|
||||||
|
What's the simplest test to begin with?
|
||||||
|
pubDate: 2023-09-07
|
||||||
|
permalink: >
|
||||||
|
archive/2023/09/07/what-s-the-simplest-test-to-begin-with
|
||||||
|
tags:
|
||||||
|
- software-development
|
||||||
|
- automated-testing
|
||||||
|
- test-driven-development
|
||||||
|
- php
|
||||||
|
- drupal
|
||||||
|
---
|
||||||
|
|
||||||
|
When giving talks and workshops or coaching on automated testing and test-driven development, some people may not have written tests before and aren't familiar with the structure or know where to begin.
|
||||||
|
|
||||||
|
In the workshops I ran for DrupalCamp London and DrupalCamp NYC, I wanted to cover this first before writing any implementation code.
|
||||||
|
|
||||||
|
Where do you put a test class, and what does it contain?
|
||||||
|
|
||||||
|
How do you run the tests, and how can you make it pass or fail?
|
||||||
|
|
||||||
|
## What we did
|
||||||
|
|
||||||
|
To start, we wrote a test for existing functionality within Drupal core - anonymous users can visit the front page.
|
||||||
|
|
||||||
|
This is the whole test:
|
||||||
|
|
||||||
|
```php
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Drupal\Tests\my_module\Functional;
|
||||||
|
|
||||||
|
use Drupal\Tests\BrowserTestBase;
|
||||||
|
use Symfony\Component\HttpFoundation\Response;
|
||||||
|
|
||||||
|
class MyModuleTest extends BrowserTestBase {
|
||||||
|
|
||||||
|
protected $defaultTheme = 'stark';
|
||||||
|
|
||||||
|
/** @test */
|
||||||
|
public function the_front_page_loads_for_anonymous_users() {
|
||||||
|
$this->drupalGet('<front>');
|
||||||
|
|
||||||
|
$this->assertResponse(Response::HTTP_OK);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
This is a test someone can write, run and see the test pass.
|
||||||
|
|
||||||
|
They can then experiment by changing the values to make the test fail in different ways.
|
||||||
|
|
||||||
|
## What next?
|
||||||
|
|
||||||
|
Then, we tested anonymous users cannot access the administration pages, which is also already the case in Drupal core, and then authenticated users with the correct permissions could access them.
|
||||||
|
|
||||||
|
People were getting the idea by now, and we moved on to writing and testing some of our own code.
|
Loading…
Reference in a new issue