测试 html 输出,但未定义

皮安

我已经编写了一个基本的测试框架,并且正在挑战自己用 vanilla Javascript 制作一个单页应用程序。

我一直在努力弄清楚为什么我的视图测试在运行时无法识别“列表”构造函数。

我的 specrunner 已将所有文件加载到其中,并且我之前对模型的测试工作正常。此外,使用 Specrunner 中的浏览器控制台模拟测试也可以提供正确的输出。

如果这里更快,请随意克隆我的 repo

请注意,我的测试框架“espresso”使用 expect 代替 assert 并且还有一个额外的参数用于描述测试。

espresso.js

var describe = function(description, test) {
  document.getElementById("output").innerHTML +=
    "<br><b>" + description + "</b></br>";
  try {
    test();
  } catch (err) {
    document.getElementById("output").innerHTML +=
      "<br><li>error: " + err.message + "</li></br>";
    console.log(err);
  }
};

var expect = {
  isEqual: function(description, first, second) {
    if (first === second) {
      document.getElementById("output").innerHTML +=
        description +
        "<br><li><font color='green'>PASS: [" +
        first +
        "] is equal to [" +
        second +
        "]</li></br>";
    } else {
      document.getElementById("output").innerHTML +=
        "<br><li><font color='red'>FAIL: [" +
        first +
        "] is not equal to [" +
        second +
        "]</li></br>";
    }
  }
}

Specrunner.html

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Expresso Spec Runner</title>
  </head>
  <body>
    <h1><u>Expresso Spec Runner</u></h1>
    <br>
    <div id="output"></div>
    <script src="expresso/expresso.js"></script>

    <!-- include source files here... -->
    <script src="lib/list-model.js"></script>
    <script src="lib/note-model.js"></script>
    <script src="lib/list-view.js"></script>

    <!-- include spec files here... -->
    <script src="tests/expresso-test.js"></script>
    <script src="tests/model-tests.js"></script>
    <script src="tests/view-tests.js"></script>
  </body>
</html>

列表模型.js

(function(exports) {
  "use strict";

  function List() {
    this.notelist = [];
  }

  List.prototype.add = function(text) {
    let note = new Note(text);
    this.notelist.push(note);
  };

  exports.List = List;
})(this);

// note-model.js

(function(exports) {
  "use strict";

  function Note(text) {
    this.text = text;
  }

  Note.prototype.show = function() {
    return this.text;
  };

  exports.Note = Note;
})(this);

列表视图.js

(function(exports) {
  "use strict";

  function View() {
    this.test = "hello there";

    View.prototype.convert = function(note) {
      var output = [];
      list.notelist.forEach(function(element) {
        output.push("<br><ul>" + element.text + "</ul></br>");
      });
      console.log(output);
      return output;
    };
  }

  exports.View = View;
})(this);

模型-test.js

describe("List #initialize", function() {
  var list = new List();
  expect.isEqual("blank array is loaded", list.notelist.length, 0);
});

describe("List #add", function() {
  var list = new List();
  list.add("hello");
  expect.isEqual(
    "can create and store a note",
    list.notelist[0].show(),
    "hello"
  );
  list.add("goodbye");
  expect.isEqual(
    "second note says goodbye",
    list.notelist[1].show(),
    "goodbye"
  );
  expect.isEqual("there are two notes in the list", list.notelist.length, 2);
});

view-tests.js(失败的测试)

describe("View #convert", function() {
  var view = new View();
  expect.isEqual(
    "converts the note into a HTML list",
    view.convert(list.notelist),
    "<br><ul>hello</ul></br>"
  );
});

提前致谢。

假设实验室

您需要list在 view-test.js 中定义

describe("View #convert", function() {
  var list = new List();
  // ...
});

如果您需要list在此测试函数之外定义,那么您需要将它作为参数传入,或者在window对象上定义它以便全局访问。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

单元测试打字稿指令模板业力茉莉花,html未定义

来自分类Dev

测试功能从元素获取html属性时,Jest返回未定义

来自分类Dev

ReferenceError:未定义测试

来自分类Dev

Rails密码重置邮件程序测试未定义方法“ html_safe”错误(使用Clearance gem)

来自分类Dev

NameError:在尝试测试调用位于方法中的变量的输出时在 RSpec 中未定义

来自分类Dev

JUnit测试中“方法$未定义”

来自分类Dev

Selenium测试中未定义$错误

来自分类Dev

在测试主干中未定义el

来自分类Dev

测试的未定义方法“用户”

来自分类Dev

Redux测试-ReferenceError:未定义localStorage

来自分类Dev

测试NoMethodError:未定义的方法

来自分类Dev

验收测试方法访问未定义

来自分类Dev

Jasmine 测试变量是否未定义

来自分类Dev

测试 - 未定义存根服务方法

来自分类Dev

测试人偶中未定义的事实

来自分类Dev

未定义功能 - 银杏测试

来自分类Dev

使用Vue和Cypress进行测试时,Mirage未定义错误(未定义路由)

来自分类Dev

茉莉花测试抱怨“未定义”不是对象

来自分类Dev

AngularJS Jasmine测试:TypeError:“未定义”不是对象

来自分类Dev

在测试中获取Ember属性返回未定义

来自分类Dev

$ scope。$ on在单元测试中未定义

来自分类常见问题

Chai:如何使用“ should”语法测试未定义

来自分类Dev

Rails RSpec测试:nil:NilClass的未定义方法“传递”

来自分类Dev

$ browser。$$ checkUrlChange在茉莉花测试中未定义

来自分类Dev

Rspec未定义模型方法测试失败

来自分类Dev

使用Karma进行角度测试:“未定义模块”

来自分类Dev

Rspec测试中nil类的未定义方法

来自分类Dev

在Karma测试中,未定义ReferenceError:describe

来自分类Dev

使用Mocha测试NodeJS-“未定义需求”

Related 相关文章

  1. 1

    单元测试打字稿指令模板业力茉莉花,html未定义

  2. 2

    测试功能从元素获取html属性时,Jest返回未定义

  3. 3

    ReferenceError:未定义测试

  4. 4

    Rails密码重置邮件程序测试未定义方法“ html_safe”错误(使用Clearance gem)

  5. 5

    NameError:在尝试测试调用位于方法中的变量的输出时在 RSpec 中未定义

  6. 6

    JUnit测试中“方法$未定义”

  7. 7

    Selenium测试中未定义$错误

  8. 8

    在测试主干中未定义el

  9. 9

    测试的未定义方法“用户”

  10. 10

    Redux测试-ReferenceError:未定义localStorage

  11. 11

    测试NoMethodError:未定义的方法

  12. 12

    验收测试方法访问未定义

  13. 13

    Jasmine 测试变量是否未定义

  14. 14

    测试 - 未定义存根服务方法

  15. 15

    测试人偶中未定义的事实

  16. 16

    未定义功能 - 银杏测试

  17. 17

    使用Vue和Cypress进行测试时,Mirage未定义错误(未定义路由)

  18. 18

    茉莉花测试抱怨“未定义”不是对象

  19. 19

    AngularJS Jasmine测试:TypeError:“未定义”不是对象

  20. 20

    在测试中获取Ember属性返回未定义

  21. 21

    $ scope。$ on在单元测试中未定义

  22. 22

    Chai:如何使用“ should”语法测试未定义

  23. 23

    Rails RSpec测试:nil:NilClass的未定义方法“传递”

  24. 24

    $ browser。$$ checkUrlChange在茉莉花测试中未定义

  25. 25

    Rspec未定义模型方法测试失败

  26. 26

    使用Karma进行角度测试:“未定义模块”

  27. 27

    Rspec测试中nil类的未定义方法

  28. 28

    在Karma测试中,未定义ReferenceError:describe

  29. 29

    使用Mocha测试NodeJS-“未定义需求”

热门标签

归档