是的,如果你想知道的话。与 Chrome 应用程序的 CSP 限制没有冲突,这也适用于 Derick Bailey 的 Jasmine.Async ( https://github.com/derickbailey/jasmine.async )。
我以正常方式设置测试,对 Chrome 应用程序环境没有做任何不同的事情。为了开始测试,我使用了这个函数,基于传统的 Jasmine 调用示例:
function jasmine_run() {
var jasmineEnv = jasmine.getEnv();
jasmineEnv.updateInterval = 1000;
var htmlReporter = new jasmine.HtmlReporter();
jasmineEnv.addReporter(htmlReporter);
jasmineEnv.specFilter = function(spec) {
return htmlReporter.specFilter(spec);
};
jasmineEnv.execute();
}
我没有解决的一个问题是,因为我不关心它,输出中的任何链接(用于运行单个测试等)都不起作用,因为 Chrome 应用程序中没有导航。但是,这绝不会影响测试本身,只是 HTML 显示的一个功能。
几乎所有值得做的事情都是在我的应用程序中异步完成的,但 Jasmine.Async 处理得很好,就像在这个例子中一样(Facebook 模块是我自己的):
describe('Facebook',
function () {
var async = new AsyncSpec(this);
async.it("authorizes",
function(done) {
Facebook.authorize(
function(success) {
expect(success).toBeTruthy();
done();
}
);
}
);
async.it("searches",
function(done) {
Facebook.call("search?q=" + encodeURIComponent('Adolfo') +
"&type=user&fields=picture,gender,id,name,updated_time,username",
function (result) {
expect(result.data.length > 0).toBeTruthy();
expect(result.data[0].username).not.toBeNull();
done();
}
);
}
);
}
);
我没有检查 Jasmine 是否适用于 Chrome 扩展,因为我不编写扩展。