Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/33.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
如何在angular 2中编写测试,以检查子组件中是否设置了输入变量?_Angular_Typescript_Karma Jasmine - Fatal编程技术网

如何在angular 2中编写测试,以检查子组件中是否设置了输入变量?

如何在angular 2中编写测试,以检查子组件中是否设置了输入变量?,angular,typescript,karma-jasmine,Angular,Typescript,Karma Jasmine,My app.component有一个名为“environment”的属性,该属性是使用http服务设置的,下面是组件 app.component.ts //import .. @Component({ selector: 'my-app', template: require('./app.component.html') }) export class AppComponent { myEnvironment: String; workbenchBaseUrl : Str

My app.component有一个名为“environment”的属性,该属性是使用http服务设置的,下面是组件

app.component.ts

//import ..

@Component({
  selector: 'my-app',
  template: require('./app.component.html')
})

export class AppComponent {
  myEnvironment: String;
  workbenchBaseUrl : String = 'workbenchBaseUrl';

  constructor(private _propertyService : PropertyService){
  }

  ngOnInit(): void {
    this._propertyService.getValue(this.workbenchBaseUrl)
        .subscribe(environment => this.myEnvironment = environment,
            error => this.errorMessage = <any>error);
  }


}
现在,我正在尝试为workdisplay.component编写单元测试,以确保它设置了环境变量,但我不确定如何测试它,因为它仅在父组件中的回调之后设置,并且一开始是未定义的。 这是我在规范中写的

工作流-display.spec

//import..

describe('WorkflowDisplayComponent (inline template)', () => {

    let comp:    WorkflowDisplayComponent;
    let fixture: ComponentFixture<WorkflowDisplayComponent>;


    beforeEach(async(() => {
        TestBed.configureTestingModule({
            declarations: [ WorkflowDisplayComponent ], // declare the test component
            providers: [WorkflowService,
                        MockBackend,
                        BaseRequestOptions,
                        {
                        provide: Http,
                        deps: [MockBackend, BaseRequestOptions],
                        useFactory:
                            (backend: XHRBackend, defaultOptions: BaseRequestOptions) => {
                                return new Http(backend, defaultOptions);
                            }
                        }
            ]
        }).compileComponents();

        fixture = TestBed.createComponent(WorkflowDisplayComponent);

        comp = fixture.componentInstance; // BannerComponent test instance


    }));

    it('should have right URL', () => {
        fixture.detectChanges();
        expect((comp.environment + comp.workbenchTaskPage)).toEqual('http://dev.grc.coreworkbench.int.westgroup.com/grcworkbench/app/grcnewsalerts/wsIndex');
    });
});

现在我看到子组件环境变量还没有定义,我不知道如何解决这个问题。应该测试应用程序组件,以确保其“myEnvironment”变量已设置或其他内容

你得到答案了吗?
    //import ..

    @Component({
        selector: 'workflow-display',
        template: require('./workflow-display.component.html')
    })
    export class WorkflowDisplayComponent implements OnInit {

        //some other variables hidden...
        workbenchTaskPage: string = 'wsIndex'; 
        @Input()
        environment: String;

        constructor(private _workflowService: WorkflowService) {

        }

        openTask(event: any, task: any) {
          window.open(this.environment + this.workbenchTaskPage + "?taskId=" + task.taskId + "&activitiWorkflow=true");
        }

 }
//import..

describe('WorkflowDisplayComponent (inline template)', () => {

    let comp:    WorkflowDisplayComponent;
    let fixture: ComponentFixture<WorkflowDisplayComponent>;


    beforeEach(async(() => {
        TestBed.configureTestingModule({
            declarations: [ WorkflowDisplayComponent ], // declare the test component
            providers: [WorkflowService,
                        MockBackend,
                        BaseRequestOptions,
                        {
                        provide: Http,
                        deps: [MockBackend, BaseRequestOptions],
                        useFactory:
                            (backend: XHRBackend, defaultOptions: BaseRequestOptions) => {
                                return new Http(backend, defaultOptions);
                            }
                        }
            ]
        }).compileComponents();

        fixture = TestBed.createComponent(WorkflowDisplayComponent);

        comp = fixture.componentInstance; // BannerComponent test instance


    }));

    it('should have right URL', () => {
        fixture.detectChanges();
        expect((comp.environment + comp.workbenchTaskPage)).toEqual('http://dev.grc.coreworkbench.int.westgroup.com/grcworkbench/app/grcnewsalerts/wsIndex');
    });
});
should have right URL FAILED
        Expected 'undefinedwsIndex' to equal 'http://dev.grc.coreworkbench.int.westgroup.com/grcworkbench/app/grcnewsalerts/wsIndex'.