FeathersJS:在服务测试中注入 HTTP headers

FeathersJS: Injecting HTTP headers in Service Test

在 feathersJS 服务中,我有一个 before 钩子 运行 期望某个 HTTP header 存在:

src/services/service_name/service_name.hooks.js

const validationHook = () => (context, next) => {
  if (!context.params.headers.hasOwnProperty('header-wanted'))
    throw new errors.BadRequest();
  next(null, context);
};

module.exports = {
    before: {
        all: [cronValidationHook()],
...
..
.

但是,在从 feathers-cli 生成的测试文件中测试此服务时,我还没有找到在调用 before 挂钩之前注入 headers 的方法。有问题的测试是:

test/services/service_name.test.js

describe('get', () => {
  it('should run "id" endpoint', async () => {
    const service = app.service('v1/cron');
    const resp = await service.get('id', params);
    // Assertions exist after this call
   });
});

有没有不需要通过 node-fetchrequests 使用 HTTP 调用的方法?

params 将是您传递的任何内容。只需将 params.headers 设置为您想要测试的内容,例如

const getParams =  {
   ...params,
   headers: { 'header-wanted': 'something' }
};
const resp = await service.get('id', getParams);