Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.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 Can';t解析ObservableDataSource的所有参数:([object],?)_Angular_Unit Testing_Jasmine_Karma Runner - Fatal编程技术网

Angular Can';t解析ObservableDataSource的所有参数:([object],?)

Angular Can';t解析ObservableDataSource的所有参数:([object],?),angular,unit-testing,jasmine,karma-runner,Angular,Unit Testing,Jasmine,Karma Runner,我目前正在使用。为了将我的ngrx/store连接到数据表CDK中,我扩展了数据源CDK的connect方法,以允许注入一个可观测值。以下是此问题的相关代码 export class ObservableDataSource extends DataSource<any> { private value: any[]; private key: string; constructor(value: any[], key) { super(); this.v

我目前正在使用。为了将我的ngrx/store连接到数据表CDK中,我扩展了数据源CDK的connect方法,以允许注入一个可观测值。以下是此问题的相关代码

export class ObservableDataSource extends DataSource<any> {
  private value: any[];
  private key: string;
  constructor(value: any[], key) {
    super();
    this.value = value;
    this.key = key;
  }

  connect() {
    return combineLatest(this.value, (data) => {
      return data[this.key];
    });
  }

  disconnect() {} 
}

但是,错误
失败:无法解析所有参数。
仍然显示。任何关于如何正确提供构造函数值的建议,以便Jasmine/Karma能够正确解析参数,我都非常感激。多谢各位

在仔细研究之后,我做了以下工作使它工作起来。首先,我意识到这是一个服务,而不是一个组件。因此,我将我的
@Component()
装饰器切换为
@Injectable
。 其次,我为该服务提供了构建服务的价值,如下所示:

providers: [
   {provide: ObservableDataSource, useValue: new ObservableDataSource([], 'visible')}
]

这解决了上述问题,并允许我继续使用TestBed

在仔细研究之后,我做了以下工作使它工作起来。首先,我意识到这是一个服务,而不是一个组件。因此,我将我的
@Component()
装饰器切换为
@Injectable
。 其次,我为该服务提供了构建服务的价值,如下所示:

providers: [
   {provide: ObservableDataSource, useValue: new ObservableDataSource([], 'visible')}
]

这解决了上述问题,并允许我继续使用TestBed

您的
observedDataSource
实际工作吗?我认为,在单元测试之外的应用程序中使用组件时,您也会遇到同样的错误。可以注入字符串或数组之类的值,但需要使用
@Inject
函数来实现。看,它确实有用。执行如下操作:
this.dataSource=newobservedDatasource(this.value,'visible')按预期工作。我明白了。然后,您必须在单元测试中执行相同的操作。试图提供像您这样的值是行不通的。好的。所以,出于好奇,我如何在单元测试中做同样的事情呢?你不必这么做。是用来了解我的意思的东西。这个例子是测试一个服务,但是想法仍然是一样的;在新建组件时,您可能会包含参数。您的
observedatasource
实际工作吗?我认为,在单元测试之外的应用程序中使用组件时,您也会遇到同样的错误。可以注入字符串或数组之类的值,但需要使用
@Inject
函数来实现。看,它确实有用。执行如下操作:
this.dataSource=newobservedDatasource(this.value,'visible')按预期工作。我明白了。然后,您必须在单元测试中执行相同的操作。试图提供像您这样的值是行不通的。好的。所以,出于好奇,我如何在单元测试中做同样的事情呢?你不必这么做。是用来了解我的意思的东西。这个例子是测试一个服务,但是想法仍然是一样的;在新建组件时,应该包括参数。