javascript中的Karma/Jasmine测试和dropbox身份验证

javascript中的Karma/Jasmine测试和dropbox身份验证,javascript,jasmine,dropbox,dropbox-api,karma-runner,Javascript,Jasmine,Dropbox,Dropbox Api,Karma Runner,我正在尝试使用Karma和Jasmine为使用Dropbox数据存储api的javascript应用程序创建一些测试。 下面是一个使用Dropbox代码的简化测试 在运行测试之前,我已经使用浏览器中的Dropbox手动授权了应用程序,但是当我运行测试时,它会说客户端未经过身份验证,并且没有发生错误。在运行测试时,是否需要做一些额外的事情来进行身份验证 “严格使用”; 描述('dropbox',函数(){ var-client=null; beforeach(函数(){ client=newdro

我正在尝试使用Karma和Jasmine为使用Dropbox数据存储api的javascript应用程序创建一些测试。 下面是一个使用Dropbox代码的简化测试

在运行测试之前,我已经使用浏览器中的Dropbox手动授权了应用程序,但是当我运行测试时,它会说客户端未经过身份验证,并且没有发生错误。在运行测试时,是否需要做一些额外的事情来进行身份验证

“严格使用”;
描述('dropbox',函数(){
var-client=null;
beforeach(函数(){
client=newdropbox.client({key:'46tjf8x15q98xic'});
//尝试完成OAuth授权。
验证({interactive:false},函数(错误){
如果(错误){
警报(“身份验证错误:”+错误);
}
});
});
它('客户端不为null',函数(){
expect(client.not.toBeNull();
});
它('authenticated is true',function(){
expect(client.isAuthenticated()).toEqual(true);
});
});
运行“业力:单位”(业力)任务
信息[karma]:karma v0.10.9服务器在启动http://localhost:8080/
信息[launcher]:启动浏览器Chrome
信息[Chrome 33.0.1750(Mac OS X 10.9.2)]:连接在插座BKoS8rqqeeL7fg3cHEQl上
Chrome 33.0.1750(Mac OS X 10.9.2)dropbox验证为真失败
期望false等于true。
错误:false应等于true。
在空。(/Users/davidsmith/Sites/myapp/test/spec/dropbox.js:23:38)
Chrome 33.0.1750(Mac OS X 10.9.2):执行2/2(1失败)(0.301秒/0.009秒)
警告:任务“因果报应:单位”失败。使用--force继续。
由于警告而中止。

因此,为了能够运行测试,我查看了浏览器的本地存储并复制了应用程序的dropbox键/值对

在我的测试脚本中,我用

var value = '{"key":"46tjf8x15q98xic","token":"srMz5w4ReBsAAAAAAAAAAWfQfibrbJfeI7LVKsbMvxRfX1pdpS6SOKqvN6DcgK1B","uid":"1407454"}';

localStorage.setItem('dropbox-auth:default:cHKvNCKVzU7Jmnyaj1InU8TBCOc', value );

另一个相关的问题(上面没有显示)是openDefaultDatastore是异步的,所以在我的测试脚本中,我添加了一些代码,以便在运行测试之前等待openDefaultDatastore完成

我对Karma和Jasmine一无所知,但我的猜测是,从您在浏览器中手动身份验证到运行测试之间,本地存储不会被保留。尝试一个更简单的测试,比如在浏览器中设置localStorage.foo='bar',然后测试您是否可以看到该值?啊,好主意。我刚试过,运行测试时找不到我在浏览器中设置的“foo”。接下来,我在测试期间尝试设置并获取一个localStorage值,结果成功了。我想我下一步要尝试的是从浏览器复制dropbox的本地存储密钥/值对,并在测试期间将其添加到本地存储中,看看是否有效。