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

TDD document error: Test if element was added to the DOM

本文关键字:添加 DOM 是否 元素 文档 错误 测试 TDD      更新时间:2023-09-26

如何测试画布元素是否添加到DOM?

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

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

我得到一个错误ReferenceError: document is not defined从Jasmine指向CustomLibrary.prototype.create函数。

是否有其他方法来测试这个?

茉莉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;
}

我通过删除

解决了这个问题
var document;