Angularjs 从角度测试打电话给kinvey?

Angularjs 从角度测试打电话给kinvey?,angularjs,karma-runner,kinvey,Angularjs,Karma Runner,Kinvey,我需要在kinvey中创建一个用户,并断言用户已经添加,所有这些都在角度测试中。我正在使用karma测试跑步者。我所有的测试都超时了,kinvey promise块中的所有代码都没有被执行。我怎样才能开始写这些测试呢?测试代码如下: describe("Kinvey: Users", function() { var key, secret; beforeEach(function(){ key = '...', secret = '...' }); it("

我需要在kinvey中创建一个用户,并断言用户已经添加,所有这些都在角度测试中。我正在使用karma测试跑步者。我所有的测试都超时了,kinvey promise块中的所有代码都没有被执行。我怎样才能开始写这些测试呢?测试代码如下:

describe("Kinvey: Users", function() {

var key,
    secret;

beforeEach(function(){
    key = '...',
    secret = '...'


});


it("should create a user", function(done){


    var App = angular.module('App', ['kinvey']);

    App.run(['$kinvey', function($kinvey) {
    $kinvey.init({
        appKey: key,
        masterSecret: secret
    });

        var promise = $kinvey.DataStore.save('users', {
        username : 'gertrude@test.com'
        });

        promise().then(function(success){
            var query = new $kinvey.Query();
            query.equalTo('username', 'gertrude');
            var queryPromise = $kinvey.DataStore.find('users', query);
            return queryPromise().then(
                function(response){
                    console.log("response");
                    expect(response.username).to.equal("gertrude@test.com");

                    var destroyPromise = $kinvey.DataStore.destroy('users', response.id);

                    return destroyPromise().then(function(success){
                        return done();
                    }, function(error){
                        return done();
                    })
                }, function(error){
                    return null;
                })
        }, function(error){
            return null;
        });

    }]);
}); 

您缺少一些东西:

  • 您缺少对的调用,因此永远不会执行
    run
  • $kinvey.init()
    方法是异步的。因此,在调用
    $kinvey.DataStore.save()
    (或任何其他
    $kinvey.*
    方法)之前,请确保init方法完成
  • 您似乎是通过使用
    $kinvey.DataStore.save()
    users
    集合来创建用户。强烈建议您改用
前进的最佳方式是将内容移动到挂钩之前的

before(function(done) {
  this.App = angular.module('App', ['kinvey']);
  this.App.run(['$kinvey', function($kinvey) {
    $kinvey.init({
      appKey    : 'App Key',
      appSecret : 'App Secret'
    }).then(function() {
      done();
    }, function(error) {
      done(new Error(error.description));
    });
  }]);
  angular.bootstrap(document, ['kinvey']);
});
现在,在您的测试(
it
方法)中,您可以通过以下操作获得对
$kinvey
的引用:

var $injector = angular.injector(['ng', 'kinvey']);
$injector.invoke(function($kinvey) {
  // Do your tests with $kinvey.
});
试一试!我放了一把叉子

免责声明:我是图书馆的作者