JavaScript在Jasmine测试中失败

时间:2017-02-28 19:05:31

标签: javascript jasmine

我无法弄清楚为什么Jasmine测试框架在尝试读取div#2中的那些元素的classList属性时未定义我的“childElement”元素 - div#5。Div#1不会抛出任何错误,但其余的。所以我想知道这是否可以帮助某人弄清问题是什么。

以下是其中一个不起作用的测试的代码:

describe('Div #2', function() {

  var tag = 'div';
  var element = document.getElementsByTagName(tag)[1];
  var childElement = element.getElementsByTagName(tag)[1];

  var utilityClass = 'align-self-center';
  var hasUtilityClass = null;

  it('should have the class "' + utilityClass + '".', function() {
    hasUtilityClass = childElement.classList.contains(utilityClass);
    expect(hasUtilityClass).toBe(true);
  });

});

您可以在此处查看我的完整代码:http://codepen.io/jeppeschaumburg/pen/zNyLOK

2 个答案:

答案 0 :(得分:1)

var element = document.getElementsByTagName(tag)[1];是:

"contacts" table
+----+------+
| id | name |
+----+------+
|  1 | p1   |
|  2 | p2   |
|  3 | p3   |
|  4 | p4   |
|  5 | p5   |
|  6 | p6   |
+----+------+

"parents_and_children" table
+----+-----------+----------+
| id | parent_id | child_id |
+----+-----------+----------+
|  1 |         1 |        2 |
|  2 |         1 |        3 |
|  3 |         3 |        4 |
|  4 |         5 |        2 |
|  5 |         5 |        3 |
|  6 |         5 |        6 |
+----+-----------+----------+

因此其中没有子元素。然后是+-------------------+------------------+ | parent(s) name(s) | children name(s) | +-------------------+------------------+ | p1, p5 | p2, p3 | | p3 | p4 | | p5 | p6 | +-------------------+------------------+

尝试使用chrome / firefox调试窗口逐步执行代码以查看问题所在。

答案 1 :(得分:0)

您可能需要考虑使用getElementsByClassName定位以获取所有d-flex example-alignSelf类命名的容器,然后查找要传递的测试用例。