Angularjs 使用jasmine在Angular JS中测试$q的返回值

Angularjs 使用jasmine在Angular JS中测试$q的返回值,angularjs,karma-jasmine,Angularjs,Karma Jasmine,我的工厂如下: var myFactory = function ($q) { factory = {}; factory.newObject = function() { return $q.when({ id: 0 }}); }; }; angular.module('myModule').factory('myFactory', myFactory); 如何使用jasmine测试newObject函数并确保返回的id为0? 以下是我目前掌握的情

我的工厂如下:

var myFactory = function ($q) {
    factory = {};

    factory.newObject = function() {
        return $q.when({ id: 0 }});
    };
};

angular.module('myModule').factory('myFactory', myFactory);
如何使用jasmine测试newObject函数并确保返回的id为0? 以下是我目前掌握的情况:

describe("My Factory Test", function () {

    var testMyFactory;

    beforeEach(module('myModule'));

    beforeEach(inject(function (myFactory) {
        testMyFactory = myFactory;
    }));

    it('New Entity', function ($q) {
        testMyFactory.newObject().then(function(myObj) {
            expect(myObj.id).toBe(0); // does not work
        });
    });
});
这起到了作用:

describe("My Factory Test", function () {

  var testMyFactory, rootScope;

  beforeEach(module('myModule'));

  beforeEach(inject(function (myFactory, $rootScope) {
    testMyFactory = myFactory;
    rootScope = $rootScope;
  }));

  it('New Entity', function () {
    var testObj;
    testMyFactory.newObject().then(function(myObj) {
        testObj = myObj;
    });

    rootScope.$apply();
    expect(testObj.id).toBe(0);
  });
});