如何使用 documet.getElementById 和 getElementsByClassName 显示 none css 属性 的茉莉花测试用例
How to do jasmine test case for display none css property using documet.getElementById and getElementsByClassName
我是 jasmine 测试用例的新手 我尝试在完成此样式后为选择模块做 jasmine 测试用例 属性 未定义
function Selection() {
}
Selection.prototype.expandFlightDetails = function() {
document.getElementsByClassName("flight-details-container").style.display = 'none';
document.getElementById("expandedFlightDetails").style.display = 'block';
};
Selection.prototype.hideFlightDetails = function() {
document.getElementById("expandedFlightDetails").style.display = 'none';
document.getElementsByClassName("flight-details-container").style.display = 'block';
};
我的测试用例是
describe("selection module", function() {
var selection;
beforeEach(function () {
selection= new Selection();
});
afterEach(function () {
});
it('expand the flight details part ' , function(){
selection.expandFlightDetails();
expect(document.body.getElementsByClassName('flight-details-container')[0].style.display).toEqual('none');
});
xit('hide the flight details part ', function(){
selection.hideFlightDetails();
expect(document.getElementById('expandedFlightDetails').style.display).toEqual('none');
});
});
完成此操作后,我获取并删除了 beforEach
的代码
TypeError: Cannot read property 'style' of undefined
如有错误请指正
您在这段代码上有一些错误。
首先在Selection.prototype.expandFlightDetails
确保得到数组的第一个结果(你忘记了[0]
):
document.getElementsByClassName("flight-details-container")[0]
对 Selection.prototype.hideFlightDetails
的相同评论
然后在您的测试套件中创建一个名为 selection
的 Selection 实例,但随后在这两个测试中您都使用了一个名为 flightselection
的变量,该变量未在任何地方声明。不应该是 selection
吗?
最后,您的问题似乎是您试图在测试中操纵 'flight-details-container'
,尽管此元素是在 afterEach
回调中创建的。 afterEach
表示这个会在每次测试后执行,所以在测试的时候是不存在的。
我是 jasmine 测试用例的新手 我尝试在完成此样式后为选择模块做 jasmine 测试用例 属性 未定义
function Selection() {
}
Selection.prototype.expandFlightDetails = function() {
document.getElementsByClassName("flight-details-container").style.display = 'none';
document.getElementById("expandedFlightDetails").style.display = 'block';
};
Selection.prototype.hideFlightDetails = function() {
document.getElementById("expandedFlightDetails").style.display = 'none';
document.getElementsByClassName("flight-details-container").style.display = 'block';
};
我的测试用例是
describe("selection module", function() {
var selection;
beforeEach(function () {
selection= new Selection();
});
afterEach(function () {
});
it('expand the flight details part ' , function(){
selection.expandFlightDetails();
expect(document.body.getElementsByClassName('flight-details-container')[0].style.display).toEqual('none');
});
xit('hide the flight details part ', function(){
selection.hideFlightDetails();
expect(document.getElementById('expandedFlightDetails').style.display).toEqual('none');
});
});
完成此操作后,我获取并删除了 beforEach
的代码TypeError: Cannot read property 'style' of undefined
如有错误请指正
您在这段代码上有一些错误。
首先在Selection.prototype.expandFlightDetails
确保得到数组的第一个结果(你忘记了[0]
):
document.getElementsByClassName("flight-details-container")[0]
对 Selection.prototype.hideFlightDetails
然后在您的测试套件中创建一个名为 selection
的 Selection 实例,但随后在这两个测试中您都使用了一个名为 flightselection
的变量,该变量未在任何地方声明。不应该是 selection
吗?
最后,您的问题似乎是您试图在测试中操纵 'flight-details-container'
,尽管此元素是在 afterEach
回调中创建的。 afterEach
表示这个会在每次测试后执行,所以在测试的时候是不存在的。