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

时间:2019-11-21 20:03:33

标签: javascript angular jasmine

我正在测试读写(到服务器,到mongo数据库)。 我知道,我不应该这样做,我应该使用模拟,...但是无论如何 我想写一个文档,阅读该文档以确保正确编写, 然后删除该文档,然后确认它不存在。因此,我有2个问题已经解决,但是使用了2个技巧。

1)如何逐步传递文档的mongo _id 。我想在我的Jasmine代码中有一个简单的变量,可以从每个测试中读取和写入。我现在通过在要测试的实际Angular模块中创建一个变量,然后在该代码中读取和写入一个变量来对其进行破解。

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

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

谢谢

1 个答案:

答案 0 :(得分:1)

您正在做的事情称为集成测试。这样做没什么问题,但是我通常使用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
 }
}

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

在编写单元测试时,我对此有所注意-因为测试必须以特定的顺序运行才能执行。但是,人们希望E2E /集成测试按顺序进行。