javascript - 如何将值从一个 Jasmine JavaScript 测试传递到另一个测试

标签 javascript angular jasmine

我正在测试读取和写入(到服务器,到mongo db)。 我知道,我不应该这样做,我应该使用模拟,......但无论如何 我想写一个文档,阅读该文档以确保其编写正确, 然后删除该文档,然后验证它是否已消失。所以我已经解决了 2 个问题,但是通过使用 2 个技巧。

1)如何一步步传递文档的 mongo _id 。我希望在 Jasmine 代码中有一个简单的变量,我可以从每个测试中读取和写入该变量。我现在通过在我正在测试的实际 Angular 模块中创建一个变量,并在该代码中读取和写入一个变量来破解它。

2) 由于我必须等待每个 IO 操作才能继续,所以我利用了 setTimeout(() => {done();}, 2000); 一组嵌套 beforeEach(function(done){ 中的功能 部分。

如果有的话,我想学习简单、更好的方法。

谢谢

最佳答案

您所做的称为集成测试。这样做并没有错,但我通常使用 Angular 的 E2E 工具编写集成测试。

也就是说,只需将值保存在全局变量中,它就会改变每个测试。一些伪代码

describe('integration test', () => {
 let id;
 it('should create a document', () => {
   // code to create item and return id
   id = _id;
 }
 it('should load document', () => {
    console.log(id);  // should be value from create test
 }
 it('should delete document, () => {
    console.log(id);  // should have value from create test
 }
}

由于 id 值从未在 beforeEach() 中设置,因此它将在同一 describe() block 中的测试之间保留其值。

在编写单元测试时我对此有一些警告——因为测试必须以特定的顺序运行才能执行。但是,我们希望 E2E/集成测试按顺序运行。

关于javascript - 如何将值从一个 Jasmine JavaScript 测试传递到另一个测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58982905/

相关文章:

javascript - Facebook 点赞按钮未显示

javascript - 为什么模型在nodejs中不能正确绑定(bind)?

javascript - Angular (Angular 4) RouterLinkActive 用于菜单和子菜单配置

angular - 错误代码 : 135 , 如何修复错误 : Could not find update-config. json。运行 ‘webdriver-manager update’ 下载二进制文件

javascript - Backbone 集合 : How to fetch a specific object from API to place in model

angular - 数字不断产生 ionic 3

javascript - 如何对读取或写入文件的函数进行单元测试?

angular - ActivatedRoute Angular 7 的 Jasmine 测试

javascript - Jasmine jQuery : Check if element is visible

javascript - Jquery 无法与 Internet Explorer 一起正常工作