【问题标题】:Does Jasmine work with Chrome Apps?Jasmine 是否适用于 Chrome 应用程序?
【发布时间】:2013-11-04 05:29:35
【问题描述】:

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

【问题讨论】:

    标签: javascript jasmine google-chrome-app


    【解决方案1】:

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

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

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

    【讨论】:

    • 我不明白为什么测试页面会允许导航工作,除非它被沙盒化,这意味着无法访问 Chrome API。我要进行单元测试的代码使用了这些 API。我错过了什么吗?
    • 好的。我的意思是您在应用程序之外运行页面(即仅在浏览器中),但是是的,这意味着您不能使用 chrome API,您只是在测试您的应用程序逻辑。
    猜你喜欢
    • 1970-01-01
    • 2023-03-10
    • 1970-01-01
    • 2023-03-03
    • 2015-04-01
    • 2012-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多