简单的打字稿茉莉花测试投掷&期望'错误

时间:2016-11-07 16:25:50

标签: typescript jasmine karma-jasmine

我有以下简单的Jasmine测试...

//test.spec.ts
describe('Sample', function(){
   it('Should do something', () => expect(true).toBe(true));
});

但是当我跑步时,我得到......

Error: 'expect' was used when there was no current spec, this could be because an asynchronous test timed out

这很好用......

describe('Sample', function(){
   it('Should do something', function(){
      expect(true).toBe(true);
   });
});

2 个答案:

答案 0 :(得分:3)

选中此playground

如果有这两个陈述

describe('Sample', function(){
    it('Should do something',
        () => expect(true).toBe(true));
});

describe('Sample', function(){
    it('Should do something', () => {
        expect(true).toBe(true));  
   } 
});

他们导致不同的JS代码

describe('Sample', function () {
    it('Should do something', function () { return expect(true).toBe(true); });
});
describe('Sample', function () {
    it('Should do something', function () {
        expect(true).toBe(true);
    });
});

一个简单的声明,没有包装{}被转换成return语句,我们在这里不需要

答案 1 :(得分:0)

我很确定你获得它的原因是箭头功能,它对范围的处理方式与常规匿名功能不同。

当你这样做时:

it('Should do something', function() {
    expect(true).toBe(true);
});

该功能使用规格this执行,但使用箭头功能时:

it('Should do something', () => {
    expect(true).toBe(true);
});

this不同。

易于检查,尝试:

it('Should do something', function() {
    console.log("this is: ", this);
    expect(true).toBe(true);
});

it('Should do something', () => {
    console.log("this is: ", this);
    expect(true).toBe(true);
});