Angular 失败:参数不是函数。您正在查找“mapTo()”?(rxjs地图的Karma jasmine问题-速记-获取方法)

Angular 失败:参数不是函数。您正在查找“mapTo()”?(rxjs地图的Karma jasmine问题-速记-获取方法),angular,rxjs,karma-jasmine,Angular,Rxjs,Karma Jasmine,我正在尝试使用:map(this.service.method) 而不是:map((数据)=>this.service.method(数据)) 但因果报应告诉我: 失败:参数不是函数。您正在查找“mapTo()”? 而且mapTo不是我想在那里使用的 我尝试使用的服务方法: get method() { return (data) => { ... } } 编辑: 根据你的评论,我认为问题不在于方法本身。如果问题仅在测试中出现,那么this.service似乎具有实际服务以外的其他

我正在尝试使用:
map(this.service.method)

而不是:
map((数据)=>this.service.method(数据))


但因果报应告诉我:
失败:参数不是函数。您正在查找“mapTo()”?

而且
mapTo
不是我想在那里使用的

我尝试使用的服务方法:

get method() {
  return (data) => { ... }
}
编辑

根据你的评论,我认为问题不在于方法本身。如果问题仅在测试中出现,那么
this.service
似乎具有实际服务以外的其他值(但不是
undefined
,因为错误将是“无法读取未定义的属性
方法
”)


旧的不精确答案 恐怕您没有提供服务方法的完整代码。我感觉到里面可能有一个条件,当你实例化
可观察的
时,
this.service.method
getter返回
null
未定义的
。原因在于创建操作符时的同步性—在调用
映射(this.service.method)
时立即调用返回函数get的getter。只有提供给
map
作为参数的函数才会在可观察对象触发时异步调用

如果我是对的,那么你能使这项工作成功的唯一方法就是你刚才提到的方法

map((data) => this.service.method(data))
编辑

根据你的评论,我认为问题不在于方法本身。如果问题仅在测试中出现,那么
this.service
似乎具有实际服务以外的其他值(但不是
undefined
,因为错误将是“无法读取未定义的属性
方法
”)


旧的不精确答案 恐怕您没有提供服务方法的完整代码。我感觉到里面可能有一个条件,当你实例化
可观察的
时,
this.service.method
getter返回
null
未定义的
。原因在于创建操作符时的同步性—在调用
映射(this.service.method)
时立即调用返回函数get的getter。只有提供给
map
作为参数的函数才会在可观察对象触发时异步调用

如果我是对的,那么你能使这项工作成功的唯一方法就是你刚才提到的方法

map((data) => this.service.method(data))

尝试
map(this.service.method())
也就是说,使用paranethesis添加括号不应该起作用,
method
是一个getter。使用paranethesis期望该方法会带参数…尝试
map(this.service.method())
也就是说,使用paranethesis添加括号不应该起作用,
method
是一个getter。使用paranethesis预期该方法将接受参数…这是它最初的外观:
get-mapDatabaseDataToColumnConfiguration(){return(设置:SettingIO[]):GroupedConfigurationIO=>{return Object.keys(设置)。reduce((结果:GroupedConfigurationIO,key:string)=>{result[key]=设置[key]。设置值;返回结果;},{};};}

它是实时工作的,只有karma单元测试没有感觉到。也许我应该模仿它,等等。@KamilSocha91好吧,你在getter中没有条件。所以我的答案是不正确的。也许问题是,
服务在测试中是
未定义的
。这就是它最初的样子:
获取mapDatabaseDataToColumnConfiguration(){return(settings:SettingIO[]):GroupedConfigurationIO=>{return Object.keys(settings).reduce((result:GroupedConfigurationIO,key:string)=>{result[key]=settings[key]。settingsValue;return result;},{};};}

它是实时工作的,只有karma单元测试没有感觉到。也许我应该模仿它,等等。@KamilSocha91好吧,你在getter中没有条件。所以我的答案是不正确的。也许问题是,
服务在测试中是
未定义的。