Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/469.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 组件单元测试不只是测试Angular 2应用程序中的组件?_Javascript_Angular_Karma Jasmine - Fatal编程技术网

Javascript 组件单元测试不只是测试Angular 2应用程序中的组件?

Javascript 组件单元测试不只是测试Angular 2应用程序中的组件?,javascript,angular,karma-jasmine,Javascript,Angular,Karma Jasmine,我正在尝试在Angular2/AngularCLI应用程序中设置一些单元测试。当应用程序按预期工作时,测试显示失败 因此,为了简单地开始(或者我认为是这样),我设置了一个从命令行生成的测试组件(ng g c testr)。这将创建一个基本组件测试以及组件文件。当我将CD插入此组件,然后使用“ng test”运行此内置测试时,我会收到与应用程序中其他组件相关的错误。这让我感到困惑,因为我认为单独的组件测试是单元测试——因此,只设计用于测试特定组件。这是组件的示例测试: /* tslint:disa

我正在尝试在Angular2/AngularCLI应用程序中设置一些单元测试。当应用程序按预期工作时,测试显示失败

因此,为了简单地开始(或者我认为是这样),我设置了一个从命令行生成的测试组件(ng g c testr)。这将创建一个基本组件测试以及组件文件。当我将CD插入此组件,然后使用“ng test”运行此内置测试时,我会收到与应用程序中其他组件相关的错误。这让我感到困惑,因为我认为单独的组件测试是单元测试——因此,只设计用于测试特定组件。这是组件的示例测试:

/* tslint:disable:no-unused-variable */
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { By } from '@angular/platform-browser';
import { DebugElement } from '@angular/core';

import { TestrComponent } from './testr.component';

describe('TestrComponent', () => {
  let component: TestrComponent;
  let fixture: ComponentFixture<TestrComponent>;

  beforeEach(async(() => {
    TestBed.configureTestingModule({
      declarations: [ TestrComponent ]
    })
    .compileComponents();
  }));

  beforeEach(() => {
    fixture = TestBed.createComponent(TestrComponent);
    component = fixture.componentInstance;
    fixture.detectChanges();
  });

  it('should create', () => {
    expect(component).toBeTruthy();
  });
});
ERROR in ./src/app/views/client/client-panel.component.ts
Module not found: Error: Can't resolve 'app/views/client/client-panel.component.html' in '/Users/mko/Documents/abc-cli/abc-cli/cli-abc/src/app/views/client'
 @ ./src/app/views/client/client-panel.component.ts 34:22-88
 @ ./src/app/views/client/client-panel.component.spec.ts
 @ ./src \.spec\.ts
 @ ./src/test.ts
下面是另一个与另一个组件有关的错误:

/* tslint:disable:no-unused-variable */
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { By } from '@angular/platform-browser';
import { DebugElement } from '@angular/core';

import { TestrComponent } from './testr.component';

describe('TestrComponent', () => {
  let component: TestrComponent;
  let fixture: ComponentFixture<TestrComponent>;

  beforeEach(async(() => {
    TestBed.configureTestingModule({
      declarations: [ TestrComponent ]
    })
    .compileComponents();
  }));

  beforeEach(() => {
    fixture = TestBed.createComponent(TestrComponent);
    component = fixture.componentInstance;
    fixture.detectChanges();
  });

  it('should create', () => {
    expect(component).toBeTruthy();
  });
});
ERROR in ./src/app/views/client/client-panel.component.ts
Module not found: Error: Can't resolve 'app/views/client/client-panel.component.html' in '/Users/mko/Documents/abc-cli/abc-cli/cli-abc/src/app/views/client'
 @ ./src/app/views/client/client-panel.component.ts 34:22-88
 @ ./src/app/views/client/client-panel.component.spec.ts
 @ ./src \.spec\.ts
 @ ./src/test.ts

如果我将cd插入一个组件并运行“ng测试”,它是否只运行该组件的单元测试?如果不是的话,我需要做什么改变才能让它只运行单个组件测试,而不是所有组件测试?

所以我解决了问题。与我的假设相反,开箱即用的所有单个组件规范测试将一起运行,因为它们在一个描述块中分组在一起。因此,cd’ing到某个组件中并运行“ng测试”不会只运行该测试。事实上,它将运行所有这些

但是,您可以通过在descripe函数前面加上类似f的前缀来运行单个组件测试:

fdescribe('SomeComponent',()=>{…}

如果存在这样一个函数,它将运行,而不会运行其他函数


但是,更重要的是,“ng测试”实际上是为了运行整个系列的单元测试而设计的,而不是单个单元测试。

是的,只是在上面添加了它。我还收到了除此之外的其他组件的错误消息。不确定原因。抱歉,请澄清。如果我将cd插入一个组件并运行“ng测试”,它是否只运行该组件的单元测试?如果不是,我需要做什么更改才能使它只运行单个组件测试,而不是所有组件测试?