为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

杨魅力 2022-01-07 16:20:38
我正在测试读写(到服务器,到 mongo db)。我知道,我不应该这样做,我应该使用模拟,......但无论如何我想写一个文档,阅读该文档以确保它是正确写入的,然后删除该文档,然后验证它是走了。所以我已经解决了 2 个问题,但使用了 2 个技巧。1)我如何一步一步地传递文档的 mongo _id。我想在我的 Jasmine 代码中有一个简单的变量,我可以从每个测试中读取和写入。我现在通过在我正在测试的实际 Angular 模块中创建一个变量,并在该代码中读取和写入一个变量来破解它。2) 由于在继续之前我必须等待每个 IO 操作,因此我setTimeout(() => {done();}, 2000); 在一组嵌套beforeEach(function(done){ 部分中利用了该 功能 。如果有的话,我想学习简单,更好的方法。
查看完整描述

1 回答

?
汪汪一只猫

TA贡献1898条经验 获得超8个赞

您正在做的事情称为集成测试。这样做没有错,但我通常使用 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 值从未在 a 中设置,beforeEach()因此它将在同describe()一块中的测试之间保留其值。


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


查看完整回答
反对 回复 2022-01-07
  • 1 回答
  • 0 关注
  • 94 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信