我需要在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;
});
}]);
}); 发布于 2014-02-07 07:20:26
你遗漏了一些东西:
run块。$kinvey.init()方法是异步的。因此,在调用$kinvey.DataStore.save() (或任何其他$kinvey.*方法)之前,请确保init方法完成。$kinvey.DataStore.save()到users集合来创建用户的。强烈建议您改用$kinvey.User.signup()。前进的最好方法是把东西移到before钩子上:
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.
});测试结束!我放了一个JSFiddle here。
免责声明:我是这个库的作者。
https://stackoverflow.com/questions/21583066
复制相似问题