首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TypeError: jit__object_Object_38不是构造函数,NgRedux,角2

TypeError: jit__object_Object_38不是构造函数,NgRedux,角2
EN

Stack Overflow用户
提问于 2017-09-28 05:04:51
回答 1查看 257关注 0票数 0

请原谅我只是尝试在单元测试的角度2。这个奇怪的错误出现在执行npm run test。这可能是一个小错误,但是找出这个奇怪的错误是不正确的:

代码语言:javascript
复制
import { TestBed, async, inject } from '@angular/core/testing';
import { TestModule } from '../../test/test.module';
import { DevExtremeModule } from 'devextreme-angular';
import { RouterTestingModule } from '@angular/router/testing';
import { HttpModule, XHRBackend, RequestOptions } from '@angular/http';
import { Templates } from './templates.component';
import { CommandButton } from '../../common/tool/command-button.component';
import { NgReduxModule, NgRedux } from '@angular-redux/store/lib';
import { MockBackend } from "@angular/http/testing/mock_backend";
import { HttpService } from "../../services/http.service";
import { AppState } from '../../redux/index';


// Mock out the NgRedux class with just enough to test what we want.
class MockRedux extends NgRedux<AppState> {
  constructor(private state: AppState) {
    super(null);
  }
  dispatch = () => undefined;
  getState = () => this.state;
}


describe('Component : Templates', () => {

  let fixture;
  let mockRedux: NgRedux<AppState>;
  let mockState : AppState = {
    session : { token: '', user: { firstName : 'Test User' }, isError: null }
  };

  beforeEach(done => {
    mockRedux = new MockRedux(mockState);

    const configure = (testBed: TestBed) => {
      testBed.configureTestingModule({
        imports: [ TestModule, DevExtremeModule, 
            RouterTestingModule, HttpModule ],
        declarations : [ Templates ],
        providers: [
          { provide: XHRBackend, useClass: MockBackend },
          {
            provide: HttpService,
            useFactory: (backend: XHRBackend, options: RequestOptions, redux: NgRedux<AppState> ) => {
              return new HttpService(backend, options, mockRedux );
            },
            deps: [XHRBackend, RequestOptions]
          },
          { provide: NgRedux, useClass : mockRedux }
        ]
      });
    };

    TestModule.configureTests(configure).then(testBed => {
      fixture = testBed.createComponent(RegTemplates);
      fixture.detectChanges();
      done();
    });

  });

  it('should instantiate Templates Component', async(inject([], () => {
    fixture.whenStable().then(() => {
      fixture.autoDetectChanges();
      expect(fixture.componentInstance).toBeDefined();
    });
  })));

  // To do 
});

错误说:

代码语言:javascript
复制
TypeError: jit__object_Object_38 is not a constructor

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-09-28 05:24:29

对我来说,问题是我试图使用useClass而不是useValue,这可能是一个错误,但我很难学会.) { provide: NgRedux, useValue : mockRedux }是正确的用法,而不是{ provide: NgRedux, useClass : mockRedux }

代码语言:javascript
复制
  beforeEach(done => {
    mockRedux = new MockRedux(mockState);

    const configure = (testBed: TestBed) => {
      testBed.configureTestingModule({
        imports: [ TestModule, DevExtremeModule, 
            RouterTestingModule, HttpModule ],
        declarations : [ RegTemplates, CommandButton, RegHeader, 
            RegStructureImage ],
        providers: [
          { provide: XHRBackend, useClass: MockBackend },
          {
            provide: HttpService,
            useFactory: (backend: XHRBackend, options: RequestOptions, redux: NgRedux<AppState> ) => {
              return new HttpService(backend, options, mockRedux );
            },
            deps: [XHRBackend, RequestOptions]
          },
          { provide: NgRedux, useValue : mockRedux }
        ]
      });
    };

    TestModule.configureTests(configure).then(testBed => {
      fixture = testBed.createComponent(RegTemplates);
      fixture.detectChanges();
      done();
    });

  });
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46461324

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档