【发布时间】:2017-02-12 12:26:00
【问题描述】:
我在使用 Jasmine(2.4 版)JavaScript 测试框架时遇到问题。
我正在 udemy.com 上创建课程,但在线检查器不接受我的代码的最后一部分,我在其中使用“expect(variable).toBe(true);”茉莉花的作用。
describe('A div with class', function() {
var parent = document.getElementsByClassName('media')[0];
it('"media" should exist.', function() {
expect(parent).toBeDefined();
});
var child = document.getElementsByClassName('media-body')[0];
it('"media-body" should exist.', function() {
expect(child).toBeDefined();
});
});
describe('A div with class "media"', function() {
var parent = document.getElementsByClassName('media')[0];
var child = document.getElementsByClassName('media-body')[0];
var answer;
if (parent.firstChild == child) {
answer = true;
} else {
answer = false;
}
it('should have a div with class "media-body" as its child.', function() {
expect(answer).toBe(true);
});
});
udemy.com 页面的测试输出是:
“具有“media”类的 div 应该有一个具有“media-body”类的 div 作为其子级。
预期假为真"
我更新后的代码现在运行良好:
describe('A div with the class', function() {
var class1 = 'media';
var failClass1 = '"' + class1 + '"' + ' should exist.'
var class2 = 'media-body';
var failClass2 = '"' + class2 + '"' + ' should exist.'
var element1 = null;
var element2 = null;
var relationship1_2 = null;
var failRelationship = '"' + class2 + '"' + ' should be nested in a div with the class "' + class1 + '".'
beforeEach(function() {
element1 = document.getElementsByClassName(class1)[0];
element2 = document.getElementsByClassName(class2)[0];
relationship1_2 = element1.contains(element2);
})
it(failClass1, function() {
expect(element1).toBeDefined();
});
it(failClass2, function() {
expect(element2).toBeDefined();
});
it(failRelationship, function() {
expect(relationship1_2).toBe(true);
});
});
【问题讨论】:
-
不知道为什么,但无论如何您可能想重写为
expect(parent.firstChild === child).toBe(true);并为自己节省6行代码。
标签: javascript jasmine