Javascript 测试函数返回的对象的方法

Javascript 测试函数返回的对象的方法,javascript,angularjs,unit-testing,karma-jasmine,Javascript,Angularjs,Unit Testing,Karma Jasmine,我有一个函数,它返回一个包含许多方法的对象,我需要检查这个返回对象中的一个方法。我使用AngularJS和Karma+Jasmine作为测试套件。如何在函数返回的对象内调用方法 功能模块选项(){ ......... 返回此。$q((解析)=>{ //测试可在此处访问 此.solveModel={ 保存:()=>{ //测试无法调用save() this.saveToDB=this.tosendtob; }, 取消:()=>{。。。 }, 删除:()=>{。。。 } }; }); }很抱歉,我

我有一个函数,它返回一个包含许多方法的对象,我需要检查这个返回对象中的一个方法。我使用AngularJS和Karma+Jasmine作为测试套件。如何在函数返回的对象内调用方法

功能模块选项(){
.........
返回此。$q((解析)=>{
//测试可在此处访问
此.solveModel={
保存:()=>{
//测试无法调用save()
this.saveToDB=this.tosendtob;
},
取消:()=>{。。。
},
删除:()=>{。。。
}
};
});

}
很抱歉,我还不能发表评论,但必须解决承诺问题,并将solveModel传递给它,才能返回solveModel。您在哪里解决该承诺?

抱歉,我还不能发表评论,但必须解决该承诺并将solveModel传递给它,以便返回solveModel。您在哪里解决这个承诺?

您不需要执行类似于
vm.modalOptions()。然后(函数(值){console.log(值);})
的操作来获取solveModal对象吗?因为它返回一个承诺否?实际上这是我正在做的,但是测试没有进入then调用。后来,我一直按顺序手动调用函数,结果成功了。奇怪但有效:)难道你不需要像
vm.modalOptions().then(function(value){console.log(value);})
那样获得solveModal对象吗?因为它返回一个承诺否?实际上这是我正在做的,但是测试没有进入then调用。后来,我一直按顺序手动调用函数,结果成功了。奇怪但有效:)不确定它是如何解决的,但在调用之前的
vm.modalOptions()
后,我可以直接访问
solveModal.save()
。该函数没有reject,因此我认为它总是使用solveModal对象解析(solveModal最初是{})。这是可能的吗?声明,$q得到一个函数作为参数,它本身有两个参数:resolve和reject。在您的情况下,无论出于何种原因,拒绝被省略,但您可以添加它。在传递给$q的函数中,您必须自己调用resolve来解析承诺。当然,如果您立即在
vm.modalOptions()
中解析,那么您描述的行为可能会发生。但是,您不能依赖它,因为它是异步的。也许您可以提供函数的确切代码?不确定它是如何解决的,但在调用之前的
vm.modalOptions()
之后,我可以直接访问
solveModal.save()
。该函数没有reject,因此我认为它总是使用solveModal对象解析(solveModal最初是{})。这是可能的吗?声明,$q得到一个函数作为参数,它本身有两个参数:resolve和reject。在您的情况下,无论出于何种原因,拒绝被省略,但您可以添加它。在传递给$q的函数中,您必须自己调用resolve来解析承诺。当然,如果您立即在
vm.modalOptions()
中解析,那么您描述的行为可能会发生。但是,您不能依赖它,因为它是异步的。也许你能提供函数的确切代码?