菜单 学习猿地 - LMONKEY

VIP

开通学习猿地VIP

尊享10项VIP特权 持续新增

知识通关挑战

打卡带练!告别无效练习

接私单赚外块

VIP优先接,累计金额超百万

学习猿地私房课免费学

大厂实战课仅对VIP开放

你的一对一导师

每月可免费咨询大牛30次

领取更多软件工程师实用特权

入驻
3199
2

Laravel+dingoApi 接口集成测试

原创
05/13 14:22
阅读数 2493

借助一个模型的 增删改查接口 来实现 接口的集成测试

  • 覆盖到了这个模型涉及的 增删改查 接口
  • 利用 DatabaseTransactions 类 实现了数据库回滚 保证数据库的清洁
<?php

namespace Tests\Feature;

use Tests\TestCase;
use App\Models\User;
use App\Models\UserAddress;
use Tests\Traits\ActingJWTUser;
use Illuminate\Foundation\Testing\DatabaseTransactions;

class UserAddressTest extends TestCase {

    use ActingJWTUser;
    use DatabaseTransactions;

    /** @test */
    public function user_address_index()
    {
        $response = $this->JWTActingAs(User::find(7))
            ->json('GET', '/api/userAddresses?include=provinceinfo,cityinfo,areainfo');

        $response->assertStatus(200)
            ->assertJsonStructure(['data', 'meta']);
    }

    /** @test */
    public function add_a_user_address()
    {
        $response_add = $this->JWTActingAs(User::find(7))
            ->json('POST', '/api/userAddresses', [
                'consignee_name' => '测试',
                'consignee_phone' => '18352506063',
                'consignee_address' => '东吴北路',
                'province' => 11,
                'city' => 94,
                'area' => 941,
                'default_status' => 1,
            ]);

        $response_add->assertStatus(200)->assertJsonFragment([
            'consignee_name' => '测试',
            'consignee_phone' => '18352506063',
            'consignee_address' => '东吴北路',
            'province' => 11,
            'city' => 94,
            'area' => 941,
        ]);
    }

    /** @test */
    public function show_a_user_address()
    {
        $user_address = $this->makeUserAddress();

        $response = $this->JWTActingAs(User::find(7))
            ->json('GET', '/api/userAddresses/' . $user_address->id . '?include=provinceinfo,cityinfo,areainfo');

        $response->assertStatus(200);
    }

    /** @test */
    public function edit_a_user_address()
    {
        $user_address = $this->makeUserAddress();

        $response = $this->JWTActingAs(User::find(7))
            ->json('PUT', '/api/userAddresses/' . $user_address->id, [
                'consignee_name' => '测试',
                'consignee_phone' => '18352506063',
                'consignee_address' => '东吴北路',
                'province' => 11,
                'city' => 94,
                'area' => 941,
                'default_status' => 1,
            ]);

        $response->assertStatus(200)->assertJsonFragment([
            'consignee_name' => '测试',
            'consignee_phone' => '18352506063',
            'consignee_address' => '东吴北路',
            'province' => 11,
            'city' => 94,
            'area' => 941,
            'default_status' => 1,
        ]);
    }

    /** @test */
    public function delete_a_user_address()
    {
        $user_address = $this->makeUserAddress();

        $response = $this->JWTActingAs(User::find(7))
            ->json('DELETE', '/api/userAddresses/' . $user_address->id);

        $response->assertStatus(204);

        $response = $this->JWTActingAs(User::find(7))
            ->json('GET', '/api/userAddresses/' . $user_address->id . '?include=provinceinfo,cityinfo,areainfo');

        $response->assertStatus(404);
    }

    private function makeUserAddress()
    {
        return factory(UserAddress::class)->create([
            'user_id' => 7,
            'company_id' => 49,
        ]);
    }
}

发表评论

0/200
3199 点赞
2 评论
收藏
为你推荐 换一批