我有这种情况,代码正在运行,但是当我运行相同的测试两次时,它失败了,我不知道为什么。看起来在beforeEach();
中有一个我不知道的问题两个beforeEach运行。顶部的第一个中的一个"描述"以及之前的内容"描述"。
有人知道这里有什么问题吗?
describe("[data-add-selected].click()", function () {
var option;
beforeEach(function () {
initialize();
option = container.find('.source .option:last');
option.addClass('selected');
container.find('[data-add-selected]').click();
});
it("this succeeds", function () {
expect(source.getOptions().length).toEqual(1);
expect(destination.getOptions().length).toEqual(2);
});
it("this FAILS", function () {
expect(container.find('.source .option').length).toEqual(1);
expect(container.find('.destination .option').length).toEqual(2);
});
});
Here正在进行中(可在浏览器上运行但在测试时失败)。
TIA。
答案 0 :(得分:2)
根据您提供的gist以及您在以各种方式操纵它们时对测试行为的评论,问题最可能的原因是您使用相同的{{1}两次。
以下是id
块的一行:
beforeEach
您创建的container = $('<div id="container" />');
div
等于“容器”。现在的问题在于:
id
第一次测试后一切都很好,因为身体里只有一个“容器”。但是,当您再次运行第二个测试,并因此再次运行$('body').append(container).append(sourceElement).append(destinationElement);
container = $('#container');
块时,另一个“容器”将附加到正文。现在有2个beforeEach
元素和div
“容器”,并且查询选择器的行为未定义。
一个好的解决方案是添加一个id
块,在测试后进行清理 - 在这种情况下删除容器。
afterEach