2

是的,如果你想知道的话。与 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 扩展,因为我不编写扩展。

4

1 回答 1

0

添加一些信息作为答案,因为问题已经得到解答。

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

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

于 2013-11-03T21:29:35.700 回答