gpt4 book ai didi

sql-server - 如何为所有测试文件运行 Jasmine beforeAll

转载 作者:行者123 更新时间:2023-11-29 13:45:12 26 4
gpt4 key购买 nike

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

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

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

当我开始设置测试时,我发现由于 javascript 的异步特性,我的事务相互冲突。基本上,事务会获得相同的序列号,然后尝试在彼此之上提交。所以独特的约束是失败的。

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

Jasmine 有类似的东西吗?如果没有,有没有办法在 nodejs 中创建一个 Controller ,它将在数据库中设置测试用例,然后以编程方式生成 jasmine?

提前致谢!

最佳答案

看起来 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() 回调中,并在完成数据库设置工作后执行它。

关于sql-server - 如何为所有测试文件运行 Jasmine beforeAll,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49615638/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com