测试 :id 路由
Testing :id routes
如何测试带有 :id 的路由。
例如,我们假设有这样一条路线
Router.get('/:id/profile
现在,我想做一个测试用例,我从别人的代码中看到的示例场景是他正在传递一串数字(可能是用户 ID 或其他东西)
作为一个被要求测试某些东西的初学者,我如何找到测试某些东西时可以发送的字符串。
例如这里
describe('Admin users API testing', () => {
it('GET /admin/users/:id/activityLog', (done) => {
request(URL)
.get('/admin/users/5a82b1a61dab4b54fj01f212e/activityLog')
.set('accept', '/application/json')
我们正在向
发送请求
it('GET /admin/users/:id/activityLog
然后看起来像这样
.get('/admin/users/5a82b1a61dab4b54fj01f212e/activityLog')
在上面的 get 请求中,我们有这样的东西
5a82b1a61dab4b54fj01f212e
所以我的问题是做测试的人是怎么知道的?
在测试开始之前,您需要用一些数据为您的数据库做种。您可以将此 ID 字符串与此种子数据一起传递,并在测试时使用相同的 ID。
或
如果您在其中一个测试用例中添加此记录,则需要在某个变量中保留 id 字符串以用于此测试用例。
对于这种集成测试。首先,我们必须准备测试数据。如果使用数据库,这意味着我们需要在 运行 测试之前插入它们。
在您的情况下,我们必须在数据库中为 ID 为 5a82b1a61dab4b54fj01f212e
的用户插入 activity 日志。所以稍后,您可以期望在测试中取回此数据。它应该与我们要测试的其他用户一起应用。
应该是:
describe('Admin users API testing', () => {
before(() => {
return insertTestData(); // insert test data to database, contain activity log for user 5a82b1a61dab4b54fj01f212e
});
it('GET /admin/users/:id/activityLog', (done) => {
return request(URL)
.get('/admin/users/5a82b1a61dab4b54fj01f212e/activityLog')
.set('accept', '/application/json')
.then(response => {
expect(response).to.eql([{ // we can match the response with test data
log_id: 1,
activity_name: 'test'
}])
});
})
});
如何测试带有 :id 的路由。
例如,我们假设有这样一条路线
Router.get('/:id/profile
现在,我想做一个测试用例,我从别人的代码中看到的示例场景是他正在传递一串数字(可能是用户 ID 或其他东西)
作为一个被要求测试某些东西的初学者,我如何找到测试某些东西时可以发送的字符串。
例如这里
describe('Admin users API testing', () => {
it('GET /admin/users/:id/activityLog', (done) => {
request(URL)
.get('/admin/users/5a82b1a61dab4b54fj01f212e/activityLog')
.set('accept', '/application/json')
我们正在向
发送请求it('GET /admin/users/:id/activityLog
然后看起来像这样
.get('/admin/users/5a82b1a61dab4b54fj01f212e/activityLog')
在上面的 get 请求中,我们有这样的东西
5a82b1a61dab4b54fj01f212e
所以我的问题是做测试的人是怎么知道的?
在测试开始之前,您需要用一些数据为您的数据库做种。您可以将此 ID 字符串与此种子数据一起传递,并在测试时使用相同的 ID。
或
如果您在其中一个测试用例中添加此记录,则需要在某个变量中保留 id 字符串以用于此测试用例。
对于这种集成测试。首先,我们必须准备测试数据。如果使用数据库,这意味着我们需要在 运行 测试之前插入它们。
在您的情况下,我们必须在数据库中为 ID 为 5a82b1a61dab4b54fj01f212e
的用户插入 activity 日志。所以稍后,您可以期望在测试中取回此数据。它应该与我们要测试的其他用户一起应用。
应该是:
describe('Admin users API testing', () => {
before(() => {
return insertTestData(); // insert test data to database, contain activity log for user 5a82b1a61dab4b54fj01f212e
});
it('GET /admin/users/:id/activityLog', (done) => {
return request(URL)
.get('/admin/users/5a82b1a61dab4b54fj01f212e/activityLog')
.set('accept', '/application/json')
.then(response => {
expect(response).to.eql([{ // we can match the response with test data
log_id: 1,
activity_name: 'test'
}])
});
})
});