Après avoir utilisé le framework Laravel pour écrire l'interface, lors de l'acceptation du projet, nous avons besoin de quelques compétences en test pour tester l'exactitude du code de l'interface. Ci-dessous, nous présenterons comment tester les interfaces Laravel.
Dans Laravel, nous pouvons utiliser PHPUnit pour les tests d'interface. PHPUnit est un puissant outil de tests unitaires PHP qui prend en charge les tests automatisés, les tests d'API et même les tests de bout en bout. Dans Laravel 5.5 et versions ultérieures, PHPUnit est devenu un outil de test intégré au framework, aucune installation supplémentaire n'est donc requise.
Dans Laravel, nous pouvons utiliser la commande php artisan make:test
pour générer des fichiers de cas de test. Cette commande générera une classe de test dans le répertoire tests/Feature
et héritera de cette classe de la classe PHPUnitFrameworkTestCase
. Chaque méthode de la classe de test sera automatiquement exécutée comme scénario de test. Par exemple : php artisan make:test
命令来生成测试用例文件。这个命令将在 tests/Feature
目录中生成一个测试类,并将这个类继承自 PHPUnitFrameworkTestCase
类。测试类的每一个方法都将被自动作为一个测试用例运行。例如:
<?php namespace Tests\Feature; use Tests\TestCase; use Illuminate\Foundation\Testing\RefreshDatabase; class ExampleTest extends TestCase { /** * A basic test example. * * @return void */ public function testBasicTest() { $response = $this->get('/'); $response->assertStatus(200); } }
在这个示例代码中,我们创建了一个 testBasicTest
的方法,并且使用了 $this->get()
方法来发送 HTTP GET 请求,然后使用 $response->assertStatus()
方法来判断响应状态码是否为 200。
在 Laravel 中,我们可以使用 $this->get()
、$this->post()
、$this->put()
、$this->patch()
和 $this->delete()
等方法来发送 HTTP 请求。这些方法将自动执行路由和控制器方法,并返回 HTTP 响应对象。例如,发送一个 GET 请求到 /users
路由,在测试类中可以这样写:
public function testGetUsers() { $response = $this->get('/users'); $response->assertStatus(200); }
在 Laravel 中,我们可以使用 $response->assertJson()
、$response->assertStatus()
、$response->assertSeeText()
和 $response->assertDontSeeText()
等方法来对响应内容进行断言。
如果我们要判断响应内容是否包含一段 JSON 字符串,可以使用 $response->assertJson()
方法,如果我们要判断响应状态码是否为 200,可以使用 $response->assertStatus(200)
方法。如果我们要判断响应内容是否包含某个文本,可以使用 $response->assertSeeText('Hello World')
方法。如果我们要判断响应内容是否不包含某个文本,可以使用 $response->assertDontSeeText('Hello World')
方法。
例如,测试 /users
路由返回的用户列表应该是一个数组,我们可以这样写:
public function testGetUsers() { $response = $this->get('/users'); $response->assertJson([ 'users' => [], ]); }
在 Laravel 中,我们可以使用 Laravel 自带的 Auth::
Facade 来模拟认证和授权。例如,我们可以使用 Auth::login()
方法来模拟登陆一个用户,也可以使用 Auth::shouldReceive()
方法来模拟验证一个用户是否有某个权限等。
例如,我们要测试是否需要认证访问 /dashboard
路由,我们可以这样写:
public function testDashboardRequiresAuthentication() { $response = $this->get('/dashboard'); $response->assertRedirect('/login'); }
在 Laravel 中,我们可以使用 PHPUnit 来进行接口测试,使用 $this->get()
、$this->post()
、$this->put()
、$this->patch()
和 $this->delete()
等方法来发送 HTTP 请求,使用 $response->assertJson()
、$response->assertStatus()
、$response->assertSeeText()
和 $response->assertDontSeeText()
等方法来对响应内容进行断言。也可以使用 Laravel 自带的 Auth::
rrreee
testBasicTest
et utilisé la méthode $this->get()
pour envoyer une requête HTTP GET, et utilisez ensuite la méthode $response->assertStatus()
pour déterminer si le code d'état de la réponse est 200. 🎜🎜Envoyer une demande🎜🎜Dans Laravel, nous pouvons utiliser $this->get()
, $this->post()
, $this ->put()
, $this->patch()
et $this->delete()
pour envoyer des requêtes HTTP. Ces méthodes exécuteront automatiquement les méthodes de route et de contrôleur et renverront les objets de réponse HTTP. Par exemple, pour envoyer une requête GET à la route /users
, vous pouvez écrire ceci dans la classe de test : 🎜rrreee🎜Juger du contenu de la réponse🎜🎜Dans Laravel, nous pouvons utiliser $response ->assertJson ()
, $response->assertStatus()
, $response->assertSeeText()
et $response-> ;assertDontSeeText()
et d'autres méthodes pour affirmer le contenu de la réponse. 🎜🎜Si nous voulons déterminer si le contenu de la réponse contient une chaîne JSON, nous pouvons utiliser la méthode $response->assertJson()
Si nous voulons déterminer si le code d'état de la réponse est 200, nous pouvons utiliser la méthode $response->assertStatus(200)
. Si nous voulons déterminer si le contenu de la réponse contient un certain texte, nous pouvons utiliser la méthode $response->assertSeeText('Hello World')
. Si nous voulons déterminer si le contenu de la réponse ne contient pas un certain texte, nous pouvons utiliser la méthode $response->assertDontSeeText('Hello World')
. 🎜🎜Par exemple, la liste d'utilisateurs renvoyée par la route test /users
doit être un tableau, nous pouvons écrire comme ceci : 🎜rrreee🎜Simuler l'authentification et l'autorisation🎜🎜Dans Laravel, nous pouvons utiliser le propre de Laravel Auth:: Façade pour simuler l'authentification et l'autorisation. Par exemple, nous pouvons utiliser la méthode Auth::login()
pour simuler la connexion d'un utilisateur, ou nous pouvons utiliser la méthode Auth::shouldReceive()
pour simuler la vérification. si un utilisateur dispose de certaines autorisations, etc. 🎜🎜Par exemple, si nous voulons tester si une authentification est requise pour accéder à la route /dashboard
, nous pouvons écrire comme ceci : 🎜rrreee🎜Résumé🎜🎜Dans Laravel, nous pouvons utiliser PHPUnit pour les tests d'interface , utilisez $this->get()
, $this->post()
, $this->put()
, $this ->patch()
et $this->delete()
et d'autres méthodes pour envoyer des requêtes HTTP, utilisez $response->assertJson( )
, $response->assertStatus()
, $response->assertSeeText()
et $response->assertDontSeeText() et d'autres méthodes pour faire des assertions sur le contenu de la réponse. Vous pouvez également utiliser la propre façade Auth::
de Laravel pour simuler l'authentification et l'autorisation. 🎜
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!