【问题标题】:How to use Loopback Angular SDK services in tests?如何在测试中使用 Loopback Angular SDK 服务?
【发布时间】:2015-10-07 18:08:29
【问题描述】:

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

var deferred = $q.defer();
$rootScope.currentUser = null;
spyOn(User, 'login').andReturn(deferred.promise);
scope.doLogin();
expect(User.login).toHaveBeenCalled();
deferred.resolve();
$rootScope.$digest();
expect($rootScope.currentUser).not.toBeNull();

但是如果 User.login() 来自 LoopBack,它的 promise 结构类似于 User.login().$promise.then() 而不是 User.login().then(),我会收到此错误:

TypeError: 'undefined' is not an object (evaluating 'User.login({ email: user.email, password: user.password }).$promise.then')

我对 Angular 测试比较陌生,所以我可能遗漏了一些明显的东西。

【问题讨论】:

    标签: javascript angularjs unit-testing jasmine loopbackjs


    【解决方案1】:
    spyOn(User, 'login').andReturn({$promise:deferred.promise});
    

    应该做的伎俩

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-09
      相关资源
      最近更新 更多