node.js - 如何在nest js中实现守卫的集成测试?
问题描述
我想使用nest js(Jest JS)对警卫进行单元测试。我找不到太多文档。
import {Test, TestingModule} from '@nestjs/testing';
import {CatsController} from '../src/modules/cats/cats.controller';
import {CatsService} from '../src/modules/cats/cats.service';
import {ICat} from '../src/modules/cats/interfaces/ICat';
import {JwtStrategy} from '../src/strategy/AppId.strategy';
beforeEach(async () => {
const module = await Test.createTestingModule({
controllers: [CatsController],
providers: [CatsService],
}).compile();
catsService = module.get<CatsService>(CatsService);
catsController = module.get<CatsController>(CatsController);
});
describe('findAll', () => {
it('should return an array of cats', async () => {
// const appIdAuthContext: AppIDAuthToken = tokenInfo;
const result: ICat = {
name: 'test',
age: 1,
breed: 'one'
};
jest.spyOn(catsService, 'findAll').mockImplementation(() => result);
console.log(result);
console.log(catsController.findAll());
expect(await catsController.findAll()).toBe(result);
});
});
上面的代码将返回猫数组。我想为这个单元测试实施警卫。
解决方案
我找到了一个实现。我正在共享示例,它可能对某人有所帮助
function createTestModule() {
return Test.createTestingModule({
imports: [
PassportModule.register({defaultStrategy: 'jwt'}), CatsModule
],
controllers: [
AppController
],
providers: [
AppService, RoleGuard, JwtStrategy
],
exports: [PassportModule]
}).compile();
}
beforeEach(async () => {
const module = (await createTestModule(
));
app = module.createNestApplication();
server = app.getHttpServer();
await app.init();
});
it('Should create cat for admin', async () => {
return await request(server)
.post('/cats/createcat')
.set('Authorization', catAdminToken)
.set('Accept', 'application/json')
.send(catDto)
.expect(201);
});
推荐阅读
- javascript - ionic 4中的自定义选项卡par我该怎么办
- python - 编译后的 Python 多进程退出且没有错误
- python - 网络驱动器的plpython3u路径问题
- elasticsearch - 在 Elasticsearch 6.3 中搜索时忽略 number_format_exception 等异常
- javascript - Google Apps 脚本:通过按钮以编程方式编辑仅查看 Google 表格的最有效方法?
- r - 在可变位置整理具有多个部分/标题的数据集
- reactjs - Formik - 处理文件黑客 - 为什么选择文件时组件重新呈现?
- android - 如何在 Android Studio 3+ 上更改项目名称
- ansible - 如何在ansible -playbook中的字符串之间添加变量
- postgresql - [SQL] 导入日期时间列时出错