【发布时间】:2019-01-23 17:08:09
【问题描述】:
我正在使用 Angular 6 和 Jasmine 来测试我的代码。
我有一个调用服务登录的函数,该服务返回一个承诺,该承诺将根据登录是否成功而拒绝或解决。
我不希望实际的服务函数运行,所以我一直在尝试模拟它,我想要它做的只是返回一个将拒绝但我无法弄清楚语法的承诺。我已经搜索了几个小时,但没有任何效果,这种可能性似乎在任何地方都没有涵盖。
谁能提供一个示例,说明您将如何模拟服务函数以提供将拒绝的承诺?
【问题讨论】:
我正在使用 Angular 6 和 Jasmine 来测试我的代码。
我有一个调用服务登录的函数,该服务返回一个承诺,该承诺将根据登录是否成功而拒绝或解决。
我不希望实际的服务函数运行,所以我一直在尝试模拟它,我想要它做的只是返回一个将拒绝但我无法弄清楚语法的承诺。我已经搜索了几个小时,但没有任何效果,这种可能性似乎在任何地方都没有涵盖。
谁能提供一个示例,说明您将如何模拟服务函数以提供将拒绝的承诺?
【问题讨论】:
从模拟函数中,您可以:return Promise.reject(your value)。
它会创建一个Promise,当被查询时会直接拒绝。
编辑您的评论:
所以如果你使用 Jasmine 设施,你可以使用mockLoginService.login.and.returnValue(Promise.reject()) 来获得模拟能力并拒绝登录尝试。
【讨论】:
mockLoginService.login.and.returnValue(),您的答案在哪里适合,或者不是吗?
mockLoginService.login.and.returnValue(Promise.reject()) 完美运行!你会编辑你的答案以包含这个或这个的某个版本,因为几乎不可能在网上找到确切的语法