我正在测试读写(到服务器,到mongo数据库)。 我知道,我不应该这样做,我应该使用模拟,...但是无论如何 我想写一个文档,阅读该文档以确保正确编写, 然后删除该文档,然后确认它不存在。因此,我有2个问题已经解决,但是使用了2个技巧。
1)如何逐步传递文档的mongo _id 。我想在我的Jasmine代码中有一个简单的变量,可以从每个测试中读取和写入。我现在通过在要测试的实际Angular模块中创建一个变量,然后在该代码中读取和写入一个变量来对其进行破解。
2)由于我必须等待每个IO操作才能继续,因此我利用了
一组嵌套setTimeout(() => {done();}, 2000);
中的beforeEach(function(done){
个功能
部分。
如果有的话,我想学习简单,更好的方法。
谢谢
答案 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 /集成测试按顺序进行。