Jasmine函数或变量来检查所有声明的'期望'函数被称为?

时间:2017-12-20 09:14:03

标签: jasmine karma-jasmine

我正在围绕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();
   }));
});

1 个答案:

答案 0 :(得分:0)

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

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