首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >js.数据角模型中的单元测试承诺

js.数据角模型中的单元测试承诺
EN

Stack Overflow用户
提问于 2015-05-11 19:00:40
回答 1查看 281关注 0票数 2

我们在项目中使用js-datajs-data-angular

我有以下模式:

代码语言:javascript
复制
(function () {
  'use strict';
  angular.module('dash.models')
    .factory('Diagnosis', ['DS', function (DS) {
      function transform(resourcename, attrs, cb) {
        attrs.icd9codes.forEach(function (el) {
          delete el.add;
        });
        cb(null, attrs);
      }

      this.transform = transform;

      return DS.defineResource({
        name: 'diagnosis',
        idAttribute: 'id',
        endpoint: '/diagnosis',
        baseUrl: '/api',
        beforeCreate: transform,
        beforeUpdate: transform
      });
    }]);

}());

以下是对上述模型的调用:

代码语言:javascript
复制
    var startEditing = self.startEditing = function(parentScope, diagnosis) {
      Diagnosis.findAll({
        deep:true
      }, {
        endpoint: '/diagnosis/' + diagnosis.id
      }).then(function(d) {
        $scope.diagnosis = d;
        $scope.inScope = true;
      });
    };

在我的单元测试中,我模拟这样的调用:

代码语言:javascript
复制
var diagDeferred = _$q_.defer();
    diagDeferred.resolve({
      'name': 'Breast',
      'categories': null,
      'id': '026c7cd0-14ef-4312-a8f1-2092107b0e50',
      'icd9codes': [{id: '1', code: '001', description: 'ICD9 Code'}]
    });

    spyOn(Diagnosis, 'findAll').and.returnValue(diagDeferred.promise);

而实际的调用是模拟的,没有执行的(我也找不到任何关于如何完成的可靠信息)是Diagnosis.findAllDiagnosis.findAll内部的函数

我知道代码是有效的,但是我需要用单元测试来覆盖它,然后我就会干净利落了。

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-12 05:10:00

我想你考试时忘了给$scope.digest()打电话了。这是一个工作的小提琴

调用startEditing()之后,应该调用$scope.$digest(),以便执行模拟promise,并在then块中获取数据。希望能帮上忙。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30175596

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档