0

我在使用 jasmine 和 karma 框架时遇到了一个奇怪的问题。基本上我只想使用一些img的纯javascript来调整大小。

我有以下测试:

    it('Should set both the height and width style for the one applicable as being the maximum allowed', function () {
    var images = '<img class="resizableImage" src="" alt="" style="height: 1200px; width: 1000px; visibility: hidden;">' +
        '<img class="resizableImage" src="" alt="" style="height: 1100px; width: 199px; visibility: visible;">' +
        '<img class="resizableImage" src="" alt="" style="height: 1990px; width: 200px; visibility: visible;">';
    setFixtures(images);

    var allResizableImages = $('img.resizableImage');
    resizeImagesWidthHeightIfBiggerThan(allResizableImages, 199, 199);

    $.each(allResizableImages, function () {
        expect($(this).css('width')).toBe('199px');
        expect($(this).css('height')).toBe('199px');
    });
});

和功能:

function resizeImagesWidthHeightIfBiggerThan(imagesToBeResized, maxWidth, maxHeight) {
var UNIT = "px";
var VISIBILITY_SETTINGS = "visible";

for (var i = 0, len = imagesToBeResized.length; i < len; i++) {
    var imgCandidate = imagesToBeResized[i];

    if (imgCandidate && imgCandidate.tagName.toLowerCase() == 'img') {
        if (imgCandidate.width > maxWidth) {
            imgCandidate.style.width = maxWidth + UNIT;
        }
        if (imgCandidate.height > maxHeight) {
            imgCandidate.style.height = maxHeight + UNIT;
        }
    }

    imgCandidate.style.visibility = VISIBILITY_SETTINGS;
}

}

使用Chrome,一切顺利。但是,使用Firefox时,测试没有通过。虽然,现场(在 Firefox 上手动进行测试),一切都很顺利。

有什么问题?

我正在使用Firefox 29.0

非常感谢。

4

1 回答 1

2

我们遇到了同样的问题。src如果为空,FF 不会报告正确的图像尺寸。尝试设置src一个有效的图像,看看它是否有效。

在我们的项目中,我们使用ng-src;不是srcng-src我们在所有测试中都创建了一个模拟。模拟用ng-src存储在/tests/image. 如果您对在其 html 模板中包含图像的指令进行单元测试,这将很有用。另请参阅如何模拟指令以启用更高级别指令的单元测试?

于 2014-05-07T16:43:03.230 回答