---
# System prepended metadata

title: API テスト内容

---

# API テスト内容

テスト観点を下記に示す。

# create

- レスポンスコード
- レスポンスのプロパティ
- 正常系の場合、**リクエストパラメータで指定したデータ**を確認
- 異常系の場合、**エラーコード**と**エラーメッセージ**を確認

リクエストパラメータで指定したデータが下記であった時・・・

```
{
    name: 'maruyama',
    age: 25
}
```

```ts=
// 正常系
.then((res) => {
    expect(res.code).toBe(200)
    const data = res.body
    expect(data).toHaveProperty('name')
    expect(data).toHaveProperty('age')
    expect(data.name).toBe('maruyama')
    expect(data.name).toBe(25)
})
// 異常系
.then((res) => {
    expect(res.code).toBe(500)
    const { error } = res.body
    expect(error.message).toBe('パラメータが不正です。')
})
```


# update

# read

- レスポンスコード
- レスポンスのプロパティ
- １つに定まる場合、個数が１であること
- テストデータに基づき、含まれるべきIDと含まれないべきIDがあれば、
    それを `toBeContain()` で判定する。

下記は、id:1 は含まれるべきで id:999 は含まれないべきであるテスト。

```ts
// get
.then((res)=> {
    expect(res.code).toBe(200)
    const data = res.body
    expect(data).toHaveProperty('count')
    expect(data).toHaveProperty('users')
    
    expect(data.count).toBe(1)
    
    const users = data.users
    const userIds = users.map(user => user.user_id)
    expect(userIds).toContain(1)
    expect(userIds).not.toContain(999)
    done()
})
```

# delete

