TDD文档错误:测试元素是否已添加到DOM

时间:2016-10-24 15:11:17

标签: javascript dom jasmine

如何测试是否将canvas元素添加到DOM?

我有一个Jasmine测试脚本,它使用jsdom创建DOM并测试是否添加了canvas元素。

在库文件中,我有原型函数将元素添加到DOM。

我收到错误 ReferenceError:来自Jasmine的文档未定义 ,指向CustomLibrary.prototype.create函数。

有没有其他方法可以测试这个?

Jasmine test.js文件:

var jsdom = require('jsdom');
var CustomLibrary = require('../lib/custom.js');

describe('Custom Library', function () {
    'use strict';

    var document;

    beforeEach(function (done) {

        jsdom.env({
            html: '<html><body><div id="someid"></div></body></html>',
            done: function (err, window) {
                if (err) console.log(err);
                document = window.document;
                done();
            }
    });

    describe('Create', function () {

        beforeEach(function () {
            var custom = new CustomLibrary();
            custom.create();
        });

        it('should create a canvas element inside of container', function () {
            var canvasElements = document.getElementById('someid').getElementsByTagName('canvas');
            expect(canvasElements.length).toEqual(1);
        });
    });


});

自定义库文件:

var CustomLibrary = (function () {

    function CustomLibrary() {
        this.create();
    }

    CustomLibrary.prototype.create = function() {
        var element = document.getElementById('someid');
        var canvas = document.createElement("canvas");
        element.appendChild(canvas);
    };

    return CustomLibrary;
})();


if ( typeof module !== 'undefined' && module.hasOwnProperty('exports') )
{
    module.exports = CustomLibrary;
}

1 个答案:

答案 0 :(得分:0)

我通过删除

解决了这个问题
var document;
来自Jasmine测试文件的