���## 單元測試:驗證 model �設置正確
相關檔案路徑
�${project_home}/express-example/test/unit/task.test.js
before(async function () {
// 初始資料庫
await require('../../models').sequelize.sync();
});
beforeEach(function () {
// 載入預計測試的 model,確保 require 可以正確完成
this.User = require('../../models').User;
this.Task = require('../../models').Task;
});
describe('create', function () {
it('creates a task',async function () {
let user = await this.User.create({
username: 'johndoe'
});
let task = await this.Task.create({
title: 'a title',
UserId: user.id
});
expect(task.title).to.equal('a title');
});
});
執行 npm run test-unit
確認運行結果
models/task
create
✓ creates a task
相關檔案路徑
�${project_home}/express-example/test/integration/user-creation-api.test.js
before(async function () {
await require('../../models').sequelize.sync();
});
beforeEach(async function () {
this.models = require('../../models');
await this.models.Task.destroy({ truncate: true })
await this.models.User.destroy({ truncate: true })
});
it('透過 api 取得特定 user 之所有 task list 資料', async function () {
// 建立測試資料
let username = 'johndoe';
let user = await this.models.User.create({
username
});
await this.models.Task.create({
title: 'johndoe task',
UserId: user.id
});
// 呼叫 API 取得資料
let response = await request(app).get(`/api/users/${username}/tasks`);
let result = response.body;
// 確認資料結構
expect(result.tasks).to.be.an('array');
expect(result.tasks[0])
.to.be.an('object')
.and.to.have.property("title");
});
it('透過 api 新增特定 user 之 task 資料', async function () {
// 建立測試資料
let username = 'andy';
await this.models.User.create({
username
});
let taskData = {
title: "andy task"
}
// 呼叫 API 新增 task
let response = await request(app)
.post(`/api/users/${username}/tasks/create`)
.send(taskData);
let result = response.body;
// 確認資料結構
expect(result.task)
.to.be.an('object')
.and.to.have.property("title");
});
�因為是測試先行,尚未實作 API,因此在這邊運作下列指令時
npm run test-integration
將會出現下面錯誤訊息
1) 透過 api 取得特定 user 之所有 task list 資料
2) 透過 api 新增特定 user 之 task 資料
0 passing (513ms)
2 failing
1) user creation page
透過 api 取得特定 user 之所有 task list 資料:
Error: expected undefined to be an array
at Assertion.assert
2) user creation page
透過 api 新增特定 user 之 task 資料:
Error: expected undefined to be an object
下一節將實作 API 並且�在前台尚未開始使用 API 時,透過 test �case 驗證 API 運作正常。