Javascript Jasmine与Chrome应用程序一起工作吗?

Javascript Jasmine与Chrome应用程序一起工作吗?,javascript,jasmine,google-chrome-app,Javascript,Jasmine,Google Chrome App,是的,如果你想知道的话。这与Chrome应用程序的CSP限制没有冲突,Derick Bailey的Jasmine.Async()也是如此 我以正常的方式设置测试,对Chrome应用程序环境没有任何不同。为了启动测试,我使用了这个函数,基于传统的Jasmine调用示例: function jasmine_run() { var jasmineEnv = jasmine.getEnv(); jasmineEnv.updateInterval = 1000; var htmlR

是的,如果你想知道的话。这与Chrome应用程序的CSP限制没有冲突,Derick Bailey的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模块是我自己的):


我没有检查Jasmine是否可以使用Chrome扩展,因为我没有编写扩展。

添加一些信息作为答案,因为问题已经回答了

不久前,我在应用程序开发中使用了Jasmine,没有任何问题。然而,我处理它的方式略有不同,这意味着我的输出确实正确地打开了


我没有在普通应用程序中运行测试,而是创建了一个用于运行jasmine测试的测试页面。由于应用程序的逻辑(由于CSP)与HTML文件分离,这应该始终是可能的,并且使您的测试代码更容易与应用程序逻辑分离。

我不明白为什么测试页面会允许导航工作,除非它是沙盒,这意味着无法访问Chrome API。我想要进行单元测试的代码使用了这些API。我错过什么了吗?好的。我的意思是你在应用程序之外运行页面(即,只在浏览器中),但是的,这意味着你不能使用ChromeAPI,你只是在测试你的应用程序逻辑。
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();
                    }
                );
            }
        );
    }
);