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();
}

気にしなかったために解決しなかった問題の 1 つは、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 に答える