Latihan 1: Testing — Laravel

Latihan 1 dari materi Testing di Laravel — praktek dengan editor kode interaktif, test case otomatis, dan hint terpandu. Langsung jalan di browser.

Kode awal sudah punya endpoint yang diuji, Route::post("/api/products", ...) yang memvalidasi name dan price lalu menyimpan produknya, dan class ProductTest extends TestCase dengan use RefreshDatabase; dan dua method kosong. Biarkan route, class, trait, dan nama method-nya, lalu isi:

  1. Di test_can_create_product: kirim $response = $this->postJson("/api/products", ["name" => "Mouse", "price" => 150000]);, lalu $response->assertStatus(201);, lalu $this->assertDatabaseHas("products", ["name" => "Mouse"]);.
  2. Di test_validation_fails_without_name: kirim request kedua $response = $this->postJson("/api/products", ["price" => 150000]);, lalu $response->assertStatus(422);.

Saat dijalankan, kedua test-nya dijalankan seperti php artisan test: request-nya sampai ke route di atas, dan RefreshDatabase mengembalikan tabelnya ke keadaan awal sebelum tiap test. Kalau keduanya lolos, output-nya:

   PASS  ProductTest
  ✓ can create product
  ✓ validation fails without name

  Tests:    2 passed (3 assertions)

Yang dicek:

Hint