QUnit - 等于 assert.equal?
QUnit - equal vs assert.equal?
我知道可以这样写
QUnit.test( "hello test", function( assert ) {
assert.ok( 1 == "1", "Passed!" );
});
如 QUnit 文档中所述。
不过,也有可能做到这一点
QUnit.test( "hello test", function() {
ok( 1 == "1", "Passed!" );
});
我在第二个版本的问题是这个ok
方法没有解决,我不能去实现,但是,我在第一个案例中看到的问题是我需要通过这个 assert
到 verificationMethod
如果我有一个,这感觉很奇怪。
那么,哪种方式更好,为什么?
过去我们(JS 社区)定义一堆全局函数(比如你的例子中的 ok()
)没有问题。但是随着我们的成长,我们已经意识到这种对全局命名空间 (window
) 的污染是一个坏主意。这就是您在原始 post.
中的第二个示例中的内容
当JavaScript在局部作用域中找不到一个变量(包括函数)时,就开始沿着作用域链向外寻找。最终 JS 引擎将到达 window
对象——我们在浏览器中的全局上下文 JavaScript。如果引擎仍然没有找到变量,那么我们会得到一个 ReferenceError
。在您的例子中,ok
函数是在 window
对象 上创建的 。您可以通过检查 window.ok === ok
.
来确认这一点
但正如我所说,作为一个社区,我们已经摆脱了全局功能。几年前,QUnit 决定提供一个更好的接口来避免全局函数,从而防止潜在的命名冲突。这有两种形式:QUnit
全局命名空间和 assert
参数进入 test
回调函数。 (我们过去只写 test(function() { ... })
而根本没有 QUnit
命名空间。)
所以... 回答你的问题...你应该使用第一种形式 (assert.ok()
) 因为这意味着你不依赖于全局定义ok
函数存在,实际上可能会与其他一些库发生冲突。当 QUnit 执行您的测试函数时,它将为该测试函数提供 assert
参数,该参数将指向 QUnit 框架中内置的断言库。 (此外,您会注意到所有 examples on the QUnit site 都使用这种形式。)
您可以 read more about this change 在文档中进行 2.x 升级。
我知道可以这样写
QUnit.test( "hello test", function( assert ) {
assert.ok( 1 == "1", "Passed!" );
});
如 QUnit 文档中所述。
不过,也有可能做到这一点
QUnit.test( "hello test", function() {
ok( 1 == "1", "Passed!" );
});
我在第二个版本的问题是这个ok
方法没有解决,我不能去实现,但是,我在第一个案例中看到的问题是我需要通过这个 assert
到 verificationMethod
如果我有一个,这感觉很奇怪。
那么,哪种方式更好,为什么?
过去我们(JS 社区)定义一堆全局函数(比如你的例子中的 ok()
)没有问题。但是随着我们的成长,我们已经意识到这种对全局命名空间 (window
) 的污染是一个坏主意。这就是您在原始 post.
当JavaScript在局部作用域中找不到一个变量(包括函数)时,就开始沿着作用域链向外寻找。最终 JS 引擎将到达 window
对象——我们在浏览器中的全局上下文 JavaScript。如果引擎仍然没有找到变量,那么我们会得到一个 ReferenceError
。在您的例子中,ok
函数是在 window
对象 上创建的 。您可以通过检查 window.ok === ok
.
但正如我所说,作为一个社区,我们已经摆脱了全局功能。几年前,QUnit 决定提供一个更好的接口来避免全局函数,从而防止潜在的命名冲突。这有两种形式:QUnit
全局命名空间和 assert
参数进入 test
回调函数。 (我们过去只写 test(function() { ... })
而根本没有 QUnit
命名空间。)
所以... 回答你的问题...你应该使用第一种形式 (assert.ok()
) 因为这意味着你不依赖于全局定义ok
函数存在,实际上可能会与其他一些库发生冲突。当 QUnit 执行您的测试函数时,它将为该测试函数提供 assert
参数,该参数将指向 QUnit 框架中内置的断言库。 (此外,您会注意到所有 examples on the QUnit site 都使用这种形式。)
您可以 read more about this change 在文档中进行 2.x 升级。