首页 文章

Jasmine JavaScript测试框架的评估问题

提问于
浏览
0

我遇到了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页面输出的测试结果如下:

“一个与 class ”媒体“的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);
});

});

1 回答

  • 0

    我建议使用beforeEach块重新组织它,如下例所示:

    describe('testing media tag hierarchy', function() {
    
      var parent = null;
    
      beforeEach(function() {
        parent = document.getElementsByClassName('media')[0];
      })
    
      it('"media" should exist.', function() {
        expect(parent).toBeDefined();
      });
    
      it('should have a div with class "media-body" as its child.', function() {
        expect(parent.firstChild.hasClass('media-body')).toBeTruthy();
      });
    });
    

    我不确定这会解决你的问题,但它可能......它更容易阅读 .

相关问题