Jasmine函数或变量来检查是否已调用所有声明的'expect'函数?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Jasmine函数或变量来检查是否已调用所有声明的'expect'函数?相关的知识,希望对你有一定的参考价值。

我正在围绕Observables编写一些异步测试。我的测试正在通过,但我意识到这只是因为一些expect匹配器实际上根本没有被调用。以下是其中一个示例。

有没有一种聪明的方法来检查所有expect函数是否被调用?我知道我可以在它周围添加计数等,但想知道是否有一种Jasmine方式。

let count = 0;
let t0 = performance.now();

let sub = observable.subscribe((items) => {
    // before data initialized
    if (count === 0) {
        expect(items.length).toBe(0);
    }
    // after dataInitialized()
    if (count > 0) {
        expect(items.length).toBe(2);
        sub.unsubscribe();
        let t1 = performance.now();
        console.log('dataInitialize() took: ' + (t1 - t0) + ' milliseconds');
    }
    count++;
});

我的测试如下:

describe( 'asdf', () => {
   it('should initializeData()', async(() => {
       const wasPromiseCreated = contentfulService.initializeData();
       expect(wasPromiseCreated).toBeTruthy();
   }));

 it('should initializeData()', async(() => {
       const wasPromiseCreated = contentfulService.initializeData();
       expect(wasPromiseCreated).toBeTruthy();
   }));
});
答案

Jasmine方式是一个完成的回调函数,它由框架传递给测试函数,一旦被调用,信号就会被执行。你可以根据柜台打电话给它

it('is async', function(done) {
  // run assertions that increment counter and if (counter == #assertion) { done() }
});

以上是关于Jasmine函数或变量来检查是否已调用所有声明的'expect'函数?的主要内容,如果未能解决你的问题,请参考以下文章

使用Jasmine检查函数中的内部变量

如何检查 `let` 变量是不是已在 ES6 上声明?

如何验证两个检查点之间是否已释放所有内存分配?

js判断是否存在指定变量或函数

js基础

代码检查错误列表