czy takie dust testy maja sens ?

0

Cześć, nie jestem pewien czy mój sposób testowania aplikacji ma sens, ale opisze mniej więcej jak to wygląda:

  1. Mam zrobione Unit testy, gdzie testuje każdą funkcjonalność modelu itp.

  2. Mam zrobione "Feature" testy, gdzie testuje kontroller, validacje itp. pomijajac permissje ( uzywam traita WithoutMiddleware) wiec testy przechodzą normalnie.

  3. Kolejny etap to testy z użyciem duska.
    Jak to wygląda:

  • w setUp seeduje role i permisje

  • tworze rawUser ( użytkownik bez żadnych praw związanych z testem, posiada jedynie do panelu administracyjnego)

  • tworze usera ktory ma prawo do wykonania operacji.

  • loguje jako userRaw, wykonuje operacje i zakładam ze się nie powiedzie.

  • loguje jako user, ktory wykonuje operacje i się powiedzie, ponieważ ma odpowiednie uprawnienia.

Poniżej przestawiam przykładowy test edycji usługi w panelu administracyjnym.

    public function it_can_edit_service()
    {
        $this->user->addPermission('edit-services');
        
        $service = create(Service::class);
        $uri = uri('panel.services.edit', $service);

        $this->browse(function(Browser $first, Browser $second) use ($uri) {

            $first->loginAs($this->rawUser)
                ->visit($uri)
                ->type('name', 'foo')
                ->type('price', 123)
                ->select('type')
                ->press('Zapisz zmiany')
                ->assertSee('Nie posiadasz odpowiednich uprawnien by wykonać tą operacje.');

            $second->loginAs($this->user)
                ->visit($uri)
                ->type('name', 'foo')
                ->type('price', 123)
                ->select('type')
                ->press('Zapisz zmiany')
                ->assertSee('Usługa została poprawnie zaktualizowana.');
        });
    }
0

Jeśli masz polityki wydzielone do odrębnej klasy (tak jak powinieneś), IMO lepiej jest przeprowadzić testy jednostkowe tamtej klasy - będą znacznie szybsze, a i będziesz w stanie pokryć więcej przypadków.

Btw:

[...] by wykonać operacje

1 użytkowników online, w tym zalogowanych: 0, gości: 1