小编jof*_*rly的帖子

如何在 CI 中运行全栈 E2E 测试 (Gitlab)

我有一个 web 应用程序,由以下部分组成: - 前端存储库 (Angular 8) - 后端存储库 (Node.js/NestJS 6)

我使用 Gitlab 作为 SCM 提供程序、docker 注册表和 CI/CD 工具。安装、检查、测试(单元)和构建已经可以与 CI 配合使用。

现在我想介绍我使用 Cypress 在前端存储库中添加的 E2E 测试。

为了使测试正常工作,我需要 - 运行后端(使用 docker-compose),包括 S3 模拟和数据库(mongo) - 将演示数据插入后端(为此获得一个脚本) - 运行指向后端 API - 运行 cypress 测试

我的问题是:如何运行包含 CI 阶段中的依赖项的 dockerized 后端,以便我有一个后端实例来运行 e2e 测试?

我已经尝试在舞台内通过 docker-compose 运行后端。这导致容器启动,但无法从 gitlab-runner 容器内访问它们。

这是前端存储库 .gitlab-ci.yml 中的一个阶段:

e2e:
  image: docker:stable
  stage: e2e
  script:
    - apk add --no-cache py-pip python-dev libffi-dev openssl-dev gcc libc-dev make nodejs npm git curl
    - pip install …
Run Code Online (Sandbox Code Playgroud)

continuous-integration gitlab-ci e2e-testing gitlab-ci-runner

5
推荐指数
0
解决办法
1399
查看次数

如何在 Typeorm 中查询数组

我想创建用户权限管理。我在 Postgresql 中使用 Typeorm。这是用户实体中权限的列定义:

  @Column({
    type: 'text',
    array: true
  })
  permissions: UserPermission[] = [];
Run Code Online (Sandbox Code Playgroud)

这是 UserPermission 枚举:

export enum UserPermission {
  APP_USER = 'APP_USER',
  USER_ADMIN = 'USER_ADMIN',
  SUPERADMIN = 'SUPERADMIN'
}
Run Code Online (Sandbox Code Playgroud)

我想找到一位拥有“SUPERADMIN”权限的用户,但我无法在解释如何执行此操作的文档/github 问题中找到正确的位置。我已经为此花费了一个多小时,我想这是一项简单的任务。

是否有类似“包含”的东西来检查权限数组是否包含特定元素和/或包含多个元素?

const user = await this.userRepository.findOne({
  where: {
    permissions: Includes('SUPERADMIN')
  }
});
Run Code Online (Sandbox Code Playgroud)

如果有人可以将我指向正确的文档页面,我将非常感激:)


编辑:

以下对我有用,但我认为它还不是最佳的:

  @Column('simple-json')
  permissions: string[];
Run Code Online (Sandbox Code Playgroud)
    let user = await this.userRepository.createQueryBuilder('user')
      .where('user.permissions like :permissions', { permissions: `%"${UserPermission.SUPERADMIN}"%`})
      .getOne();
Run Code Online (Sandbox Code Playgroud)

postgresql node.js typescript typeorm

5
推荐指数
4
解决办法
2万
查看次数