Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Jasmine试图读取不';不存在_Javascript_Angular_Typescript_Jasmine_Karma Jasmine - Fatal编程技术网

Javascript Jasmine试图读取不';不存在

Javascript Jasmine试图读取不';不存在,javascript,angular,typescript,jasmine,karma-jasmine,Javascript,Angular,Typescript,Jasmine,Karma Jasmine,我有一个非常简单的组件: 从'@angular/core'导入{Component}; @组成部分({ 选择器:“正在加载”, templateUrl:'./loading.component.html', 样式URL:['./loading.component.scss'] }) 导出类装入组件{ } 它只显示一个静态加载徽标。完全没有交互性。我编写了一个测试来测试它的实例化: 从'@angular/core/testing'导入{async,ComponentFixture,TestBed

我有一个非常简单的组件:

从'@angular/core'导入{Component};
@组成部分({
选择器:“正在加载”,
templateUrl:'./loading.component.html',
样式URL:['./loading.component.scss']
})
导出类装入组件{
}
它只显示一个静态加载徽标。完全没有交互性。我编写了一个测试来测试它的实例化:

从'@angular/core/testing'导入{async,ComponentFixture,TestBed};
从“./loading.component”导入{LoadingComponent};
描述('LoadingComponent',()=>{
let组件:加载组件;
let夹具:组件夹具;
beforeach(异步(()=>{
TestBed.configureTestingModule({
声明:[加载组件]
})
.compileComponents();
}));
在每个之前(()=>{
fixture=TestBed.createComponent(加载组件);
组件=fixture.componentInstance;
fixture.detectChanges();
});
它('应该存在',()=>{
expect(component.toBeTruthy();
});
});
在Firefox中,这个测试抛出一个错误:
j是未定义的
,在Chromium浏览器中,我看到
无法读取未定义的
的属性“startTime”。模板简单如下:

示例文本
为了弄清楚到底发生了什么。所以在这三个文件中都没有提到“startTime”-发生了什么事

注 我确实在其他组件中使用了
startTime
属性,但我不知道这有什么关系

编辑 我可以通过添加以下内容来消除此错误:

毕竟(()=>{ TestBed.resetTestingModule(); }); 项目中的每一项测试。我没有回答这个问题,因为我不知道:

  • 为什么这样做/根本问题是什么
  • 如果我挥舞着一把比我需要的更重的斧子-只在一次测试中添加它就足够了吗

  • 您看到的错误肯定不是来自您发布的组件和规范文件。您看到的错误很可能来自执行异步操作的组件,并且错误发生在实例化该组件的规范完成之后

    首先,在这个等级库文件的前面加上一个f

    fdescribe('LoadingComponent', () => {
    
    这将导致等级库运行程序仅运行此文件。你会看到它顺利通过

    接下来,如果要删除f并在项目中搜索startTime,请尝试为使用属性startTime的组件一次运行一个specs

    如果你找不到它,然后在它们的前面放一个x,一次一个,最终你会发现是哪一个导致了错误,因为当你的规格上有一个x导致了错误时,它不会发生


    任何具有异步功能的规范都应该使用异步功能,以便在进入下一个规范之前等待所有异步活动完成。

    您是否正在使用应用程序中已经存在的
    加载组件
    ?如果是这样的话,它很可能被实例化为错误。我是,但错误具体来自
    LoadingComponent should exist
    test。这不意味着错误是从那里抛出的吗?不,不一定,我以前见过很多次(包括今天)。从添加
    f
    开始描述。您的主要
    descripe
    现在将是
    fdescribe('LoadingComponent',…
    ,如果这一个描述成功,您现在可以继续检查loader.spec之外的测试范围,因此我实际上能够得到这个和其他随机
    [object]被抛出了
    错误,这些错误在所有测试中偶尔出现,然后在每个测试中添加(()=>{TestBed.resetTestingModule();});
    以消除这些错误。但我不知道为什么会这样做,甚至不知道它会做什么。“任何执行异步函数的规范都应该使用异步函数,以便在进入下一个规范之前等待所有异步活动完成。”其中?
    description('Thing',async()=>…
    beforeach(async()=>
    ,或
    it('should do',async())=>…
    ?或全部三个?@superflow:fdescribe
    是否在运行该组件的测试时停止了错误?