首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从角度测试调用kinvey?

从角度测试调用kinvey?
EN

Stack Overflow用户
提问于 2014-02-06 00:37:27
回答 1查看 300关注 0票数 0

我需要在kinvey中创建一个用户,并断言该用户已被添加,所有这些都在一个角度测试中完成。我正在使用karma测试跑步器。我的所有测试都超时了,并且kinvey promise块中的任何代码都没有执行。我如何着手编写这些测试呢?测试代码如下:

代码语言:javascript
复制
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;
        });

    }]);
}); 
EN

回答 1

Stack Overflow用户

发布于 2014-02-07 07:20:26

你遗漏了一些东西:

  • 缺少对angular.bootstrap()的调用,因此永远不会执行run块。
  • $kinvey.init()方法是异步的。因此,在调用$kinvey.DataStore.save() (或任何其他$kinvey.*方法)之前,请确保init方法完成。
  • 看起来您是通过使用$kinvey.DataStore.save()users集合来创建用户的。强烈建议您改用$kinvey.User.signup()

前进的最好方法是把东西移到before钩子上:

代码语言:javascript
复制
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的引用:

代码语言:javascript
复制
var $injector = angular.injector(['ng', 'kinvey']);
$injector.invoke(function($kinvey) {
  // Do your tests with $kinvey.
});

测试结束!我放了一个JSFiddle here

免责声明:我是这个库的作者。

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

https://stackoverflow.com/questions/21583066

复制
相关文章

相似问题

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