You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Aserce je totožná s [#Assert::match()], ale vzor se načítá ze souboru `$file`. To je užitečné pro testování velmi dlouhých řetězců. Soubor s testem zůstane přehledný.
Copy file name to clipboardExpand all lines: tester/cs/helpers.texy
+81Lines changed: 81 additions & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -2,6 +2,87 @@ Pomocné třídy
2
2
*************
3
3
4
4
5
+
HttpAssert .{data-version:2.5.6}
6
+
--------------------------------
7
+
Třída `Tester\HttpAssert` slouží k testování HTTP serveru. Umožňuje jednoduše provádět HTTP požadavky a ověřovat jejich stavové kódy, hlavičky i obsah odpovědi pomocí fluent interface.
Metoda `fetch()` standardně vytváří GET požadavek, ale všechny parametry lze přizpůsobit:
19
+
20
+
```php
21
+
HttpAssert::fetch(
22
+
'https://api.example.com/users',
23
+
method: 'POST',
24
+
headers: [
25
+
'Authorization' => 'Bearer token123', # asociativní pole
26
+
'Accept: application/json', # nebo string formát
27
+
],
28
+
cookies: ['session' => 'abc123'],
29
+
follow: false, # nesledovat redirecty
30
+
body: '{"name": "John"}'
31
+
)
32
+
->expectCode(201);
33
+
```
34
+
35
+
Stavové kódy můžete ověřovat metodami `expectCode()` a `denyCode()`. Jako parametr předáte buď konkrétní číslo, nebo validační funkci:
36
+
37
+
```php
38
+
$response
39
+
->expectCode(200) # přesný kód
40
+
->expectCode(fn($code) => $code < 400) # vlastní validace
41
+
->denyCode(404) # nesmí být 404
42
+
->denyCode(fn($code) => $code >= 500); # nesmí být chyba serveru
43
+
```
44
+
45
+
Pro práci s hlavičkami slouží metody `expectHeader()` a `denyHeader()`. Můžete kontrolovat existenci hlavičky, její přesnou hodnotu nebo jen část obsahu:
46
+
47
+
```php
48
+
$response
49
+
->expectHeader('Content-Type') # hlavička musí existovat
50
+
->expectHeader('Content-Type', 'application/json') # přesná hodnota
51
+
->expectHeader('Content-Type', contains: 'json') # obsahuje text
52
+
->expectHeader('Server', matches: 'nginx %a%') # odpovídá vzoru
53
+
->denyHeader('X-Powered-By') # hlavička nesmí existovat
54
+
->denyHeader('X-Debug', contains: 'sensitive') # nesmí obsahovat text
55
+
->denyHeader('X-Debug', matches: '~debug~i'); # nesmí odpovídat vzoru
56
+
```
57
+
58
+
Obdobně funguje ověřování těla odpovědi prostřednictvím metod `expectBody()` a `denyBody()`:
59
+
60
+
```php
61
+
$response
62
+
->expectBody('OK') # přesná hodnota
63
+
->expectBody(contains: '"status": "success"') # obsahuje část JSON
64
+
->expectBody(matches: '%A% hello %A%') # odpovídá vzoru
65
+
->expectBody(fn($body) => json_decode($body)) # vlastní validace
66
+
->denyBody('Error occurred') # nesmí mít přesnou hodnotu
67
+
->denyBody(contains: 'error') # nesmí obsahovat text
68
+
->denyBody(matches: '~exception|fatal~i'); # nesmí odpovídat vzoru
69
+
```
70
+
71
+
Parametr `follow` řídí, jak HttpAssert zachází s HTTP přesměrováními:
This assertion is identical to [#Assert::match()], but the pattern is loaded from the file `$file`. This is useful for testing very long strings. The test file remains clear.
Copy file name to clipboardExpand all lines: tester/en/helpers.texy
+81Lines changed: 81 additions & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -2,6 +2,87 @@ Helpers
2
2
*******
3
3
4
4
5
+
HttpAssert .{data-version:2.5.6}
6
+
--------------------------------
7
+
The `Tester\HttpAssert` class provides tools for testing HTTP servers. It allows you to easily perform HTTP requests and verify status codes, headers, and response body content using a fluent interface.
->denyCode(fn($code) => $code >= 500); # must not be server error
43
+
```
44
+
45
+
For header verification, use `expectHeader()` and `denyHeader()` methods. You can check whether a header exists, verify its exact value, or match part of its content:
46
+
47
+
```php
48
+
$response
49
+
->expectHeader('Content-Type') # header must exist
50
+
->expectHeader('Content-Type', 'application/json') # exact value
51
+
->expectHeader('Content-Type', contains: 'json') # contains text
0 commit comments