【问题标题】:How to run Jasmine beforeAll for all test files如何为所有测试文件运行 Jasmine beforeAll
【发布时间】:2018-04-03 05:12:37
【问题描述】:

我正在使用 nodejs 为我们的 API 创建端到端测试套件。在每个测试运行之前,我需要为该测试插入数据库记录。许多有问题的表不使用本机自动增量类型字段作为其主键。

(我知道,糟糕的数据库设计。但我无法控制。)

相反,它们使用 postgresql 通用的序列模式。但这是在 MS SQL Server 中。所以有一个存储过程可以获取下一个序列号用于表等。

当我开始设置测试时,我发现由于 javascript 的异步特性,我的事务相互冲突。基本上,事务获得相同的序列号,然后尝试相互提交。所以唯一约束失效了。

我想到的第一个解决方案(我对其他人持开放态度)是在运行任何测试之前设置所有数据库记录。但据我所知,Jasmine 的 beforeAll() 函数仅适用于它所在的文件。我需要一个 beforeAll() 函数,该函数在所有 Jasmine 测试在所有文件中运行之前运行。

茉莉花有类似的东西吗?如果没有,有没有办法可以在 nodejs 中创建一个控制器,在数据库中设置测试用例,然后以编程方式生成 jasmine?

提前致谢!

【问题讨论】:

    标签: sql-server node.js postgresql jasmine


    【解决方案1】:

    看起来 Jasmine 可以由 nodejs 以编程方式生成。我找到了一种使用以下代码的方法:

    ... Do database setup stuff here ...
    
    .then(() => {
        const Jasmine = require('jasmine');
        const jasmine = new Jasmine();
    
        jasmine.loadConfig({
            spec_dir: 'spec'
            ,spec_files: [
                '**/*[Ss]pec.js'
            ]
            ,helpers: [
                'helpers/**/*.js'
            ]
            ,random: false
        });
    
        jasmine.execute();
    });
    

    这会起作用,因为我可以将此代码放入 promise.then() 回调中,并在我完成数据库设置工作后执行它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-12-09
      • 2019-02-17
      • 2018-11-02
      • 1970-01-01
      • 2014-02-06
      • 2016-10-06
      • 1970-01-01
      • 2018-05-10
      相关资源
      最近更新 更多