vendredi 3 novembre 2017

laravel codeception api testing. Test structure

I want to test all my api endpoints with codeception.

I started off with a more model based approach:

class UserCest
{
    public function it_can_request_its_own_status (ApiTester $I) {
        $user = $I->amLoggedIn();
        $I->sendGET('/users/'.$user->id.'/status');
        $I->seeResponseCodeIs(200);
        $I->seeResponseContainsJson(['status' => 'active']);
    }
}

Now I realized that I might want to map the test directly to the routes to make it more obvious what route is tested. I thought that this would therefore rather refer to the controller that is used by the routes rather than models:

class UserControllerCest
{
    public users__user__status (ApiTester $I) {
        $route = __FUNCTION__;
        $user = $I->amLoggedIn();
        $url = $this->fillRouteWithUserId($route, $user);
        $I->sendGET($url);
        $I->seeResponseCodeIs(200);
        $I->seeResponseContainsJson(['status' => 'active']);
    }
}

What (other) approach is suitable for testing my API? Maybe to create a separate Cest for every route?

Aucun commentaire:

Enregistrer un commentaire