"function (assert)" 是做什么的?

What does "function (assert)" do?

刚开始接触qunit,正在努力通过官方介绍。 出现了很多问题,我在他们的文档中找不到任何关于 qunit 或网络上其他地方的信息。

"function (assert)" 是做什么的? Assert 是 qunit 中用于多种断言方法的类别,但它本身并不是一种方法。那么如果我将 "assert" 放入函数的参数中,会发生什么? "assert"关联的断言方法是否都在测试中执行?

https://qunitjs.com/intro/

这是一段使用了这种语法的代码

<!doctype html>
<html>
<head>
  <meta charset="utf-8">
  <title>Refactored date examples</title>

  <link rel="stylesheet" href="https://code.jquery.com/qunit/qunit-2.5.0.css">
  <script src="https://code.jquery.com/qunit/qunit-2.5.0.js"></script>
  <script src="prettydate.js"></script>

  <script>
  QUnit.test("prettydate basics", function( assert ) {
    var now = "2008/01/28 22:25:00";
    assert.equal(prettyDate(now, "2008/01/28 22:24:30"), "just now");
    assert.equal(prettyDate(now, "2008/01/28 22:23:30"), "1 minute ago");
    assert.equal(prettyDate(now, "2008/01/28 21:23:30"), "1 hour ago");
    assert.equal(prettyDate(now, "2008/01/27 22:23:30"), "Yesterday");
    assert.equal(prettyDate(now, "2008/01/26 22:23:30"), "2 days ago");
    assert.equal(prettyDate(now, "2007/01/26 22:23:30"), undefined);
  });
  </script>
</head>
<body>

<div id="qunit"></div>

</body>
</html>

完整行是:

QUnit.test("prettydate basics", function( assert ) {

这会调用函数 QUnit.test,您正在向它传递一个回调。该回调采用一个参数。 QUnit.test 会将一个对象作为第一个参数传递给您的回调,它成为您的 assert 参数。该对象有多种断言方法。

它基本上是将断言对象注入到您的代码中,以便您可以使用它来进行断言。

大致QUnit.test是这样实现的:

QUnit.test = function (name, callback) {
    const assert = {
        equal: function () { ... },
        ...
    };

    callback(assert);
};