Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
requirejs和qunit中的javascript范围_Javascript_Unit Testing_Requirejs_Qunit_Createjs - Fatal编程技术网

requirejs和qunit中的javascript范围

requirejs和qunit中的javascript范围,javascript,unit-testing,requirejs,qunit,createjs,Javascript,Unit Testing,Requirejs,Qunit,Createjs,我一直在试图弄清楚为什么这两个原型对象的作用域有点扭曲——第一个是我基于PrelodJS的预加载程序,第二个是我的QUnit测试。我已经修复了这个问题,但我不小心删除了有人善意回复的原始线程,所以我重新发布了这个工作版本,以向那个人表示感谢 'use strict'; define(['preloadjs'], function (PreloadJS) { var Preloader = function (model) { this.model = model;

我一直在试图弄清楚为什么这两个原型对象的作用域有点扭曲——第一个是我基于PrelodJS的预加载程序,第二个是我的QUnit测试。我已经修复了这个问题,但我不小心删除了有人善意回复的原始线程,所以我重新发布了这个工作版本,以向那个人表示感谢

'use strict';

define(['preloadjs'], function (PreloadJS) {
    var Preloader = function (model) {
        this.model = model;
        this.totalLoaded = 0;
        this.context = model.context;
        this.isFinished = false;

        this.onStart = (model.onStart != null) ? model.onStart : function (e) {};
        this.onUpdate = (model.onUpdate != null) ? model.onUpdate : function (e) {};
        this.onComplete = (model.onComplete != null) ? model.onComplete : function (e) {};

        this.preload = null;

        // make sure assets exists
        if (model.assets == null) {
            model.assets = {};
        }

        this.init();
    };

    /**
     * initialise preloader
     * @return {null}
     */
    Preloader.prototype.init = function() {
        var self = this;

        var preload = new PreloadJS();
        if (this.onStart != null) { 
            this.onStart(); 
        }
        preload.onProgress = function (e) { self.onUpdate(e); };
        preload.onComplete = function (e) { self.handleComplete(e); };
        preload.onFileLoad = function (e) { self.onFileLoad(e); };
        preload.loadManifest(this.model.manifest);

        this.preload = preload;
    };

    Preloader.prototype.handleComplete = function(e) {
        this.isFinished = true;

        this.onComplete(e);
    };

    /**
     * called when each file in the manifest is loaded - if it's an image, 
     * create an image object and populate its properties
     * @param  {event} e    event object
     * @return {null}
     */
    Preloader.prototype.onFileLoad = function(e) {
        if (e.type == PreloadJS.IMAGE) {
            var self = this;

            var img = new Image();
            img.src = e.src;
            img.onload = function () { self.handleFileComplete(); };
            this.model.assets[e.id] = img;
        }
    };

    /**
     * iterates totalLoaded when each image has intialised
     * @return {null}
     */
    Preloader.prototype.handleFileComplete = function() {
        this.totalLoaded++;
    };

    // public interface
    return Preloader;
});
这是预加载的QUnit测试

'use strict';

define(function (require) {
    var Preloader = require('Preloader');

    var manifest = [
        { src : '../app/images/splash-screen.jpg', id : 'splash-screen' }
    ];

    var assets = {};

    var startFired = 0;
    var updateFired = 0;
    var completeFired = 0;

    var totalLoaded = 0;

    var scopetest = 'test';

    var loaded = 0;

    var pl = new Preloader({
        manifest : manifest,
        assets : assets, 
        onStart : function (e) {
            startFired++;
        },
        onUpdate : function (e) {
            updateFired++;

            totalLoaded = e.loaded;
        },
        onComplete : function (e) {
            completeFired++;

            // adding the unit tests into the onComplete function fixed the inconsistent test results i was getting
            test('Preloader tests', function () {
                expect(4);

                equal(startFired, 1, 'onStart was called once exactly');
                ok((updateFired > 0), 'onUpdate was called at least once. Total: ' + updateFired);
                equal(completeFired, 1, 'onComplete was called once exactly');
                notEqual(pl.model.assets['splash-screen'], undefined, 'there was at least one asset loaded: ' + pl.model.assets['splash-screen']);

            });

            QUnit.start();
        }
    });

    QUnit.stop();
});

感谢您的回复,并为删除帖子表示歉意

此问题已在OP中得到回答-这是我的接受

请取消删除旧帖子,而不是重新询问问题道歉-找不到它-如果我单击收件箱中的链接,它会显示“未找到页面”此问题是作者自愿删除的-就是你谷歌帮助:。请重新打开该链接,或者回答它,然后在此处删除此链接。嗨,Bergi-我仍然收到页面未找到错误,虽然编辑链接仍然有效,但当编辑保存时,它会返回到页面未找到链接呃,忘记了依赖声誉的特权。似乎不允许您查看或重新打开自己的问题。。。我投票赞成重新开放,但这可能不会发生。没有人回答,但有人回应了,我对此表示感谢