Javascript 如何在测试中使用环回服务?

Javascript 如何在测试中使用环回服务?,javascript,angularjs,unit-testing,jasmine,loopbackjs,Javascript,Angularjs,Unit Testing,Jasmine,Loopbackjs,这对于Jasmine或Angular来说可能是个问题,但我想知道如何在测试中使用环回生成的Angular服务。我不需要测试服务本身,但我需要测试依赖于这些服务的控制器,但它们没有使用典型的承诺设置。我通常会这样测试基于承诺的服务(在Jasmine中): 但是,如果User.login()来自LoopBack,它将其承诺构造为User.login().$promise.then()而不是User.login().then(),我会得到以下错误: TypeError: 'undefined' is

这对于Jasmine或Angular来说可能是个问题,但我想知道如何在测试中使用环回生成的Angular服务。我不需要测试服务本身,但我需要测试依赖于这些服务的控制器,但它们没有使用典型的承诺设置。我通常会这样测试基于承诺的服务(在Jasmine中):

但是,如果User.login()来自LoopBack,它将其承诺构造为
User.login().$promise.then()
而不是
User.login().then()
,我会得到以下错误:

TypeError: 'undefined' is not an object (evaluating 'User.login({ email: user.email, password: user.password }).$promise.then')
我对角度测试比较陌生,所以我可能遗漏了一些明显的东西

spyOn(User, 'login').andReturn({$promise:deferred.promise});
我们应该这样做

spyOn(User, 'login').andReturn({$promise:deferred.promise});