onResourceRequested无法触发

时间:2015-12-23 15:27:04

标签: javascript jasmine phantomjs karma-runner karma-jasmine

我正在使用 Jasmine 框架和无头浏览器 PhantomJS Karma 进行测试。

onResourceRequested中注入javascript文件后,我无法让onCallback成为"解雇"}。我测试了onCallback执行,并且它被触发加上page.injectJs返回true,又称成功。

这是 Karma 的配置文件(使用'#'查找评论):

module.exports = function(config) {
    'use strict';

    config.set({
        autoWatch: false,
        basePath: '',
        frameworks: [
            'jasmine'
        ],
        files: [
            // my test files
        ],
        exclude: [
        ],
        port: 8080,
        browsers: [
            'PhantomJS'
        ],
        plugins: [
            'karma-phantomjs-launcher',
            'karma-jasmine',
        ],
        reporters: ['progress'],
        phantomjsLauncher: {
            options: {
                lastRequest: null,
                onCallback: function(data) {

                    var externalAPI = {
                        getLastRequest: function() {
                            return page.lastRequest;
                        },
                        clearLastRequest: function() {
                            page.lastRequest = null;
                        }
                    };

                    if (data.hasOwnProperty('require')) {
                        return page.injectJs(data.require);  // #SUCCEED!!!#
                    } else if (externalAPI.hasOwnProperty(data)) {
                        return externalAPI[data]();
                    }

                    return false;
                },
                onResourceRequested: function(request) {
                    page.lastRequest = request; // #DIDN'T HAPPEN AFTER injectJs succeed......#
                }
            },
            exitOnResourceError: true
        },
        browserNoActivityTimeout: 10000,
        singleRun: true,
        colors: true,
        logLevel: config.LOG_INFO,
    });
};

如何在onResourceRequested之后让page.injectJs发生?

感谢。

1 个答案:

答案 0 :(得分:0)

page.injectJs(filename)同步读取本地文件并将其同步注入页面。没有网络请求,因此无需触发onResourceRequested事件侦听器。