如果在使用 jasmine 或 mocha 等测试框架时有一个名为 "describe" 或 "it" 的全局函数怎么办
What if there's a global function named "describe" or "it" when using test frameworks like jasmine or mocha
众所周知,声明过多的全局函数或变量不是一个好习惯。但是在Jasmine和Mocha中,像"describe"和"it"这样的函数,为什么偏爱全局函数呢?也许我还没有完全理解他们?
请帮忙!
主要的答案是因为 write.They 更容易和更快也可能用于没有模块的环境,比如浏览器,所以如果你加载 jasmine,那么全局是唯一的访问 jasmine 逻辑的方法。
在这种情况下也会出现这种情况,因为编写 Jasmine 和 Mocha 测试的风格适合声明性语法,因此您几乎可以将 describe
和 it
作为测试语法,而不是而不是 JS 函数。
全局函数并不总是坏的,它只是取决于上下文。
在 "normal" Web 应用程序的上下文中,如果不在本地定义内容,则很容易污染全局范围。这就是我们使用闭包、对象字面量等东西的原因。
Jasmine 和 Mocha 使用全局函数,因为这是最简单的,全局函数直接定义了这些框架的独特语法。在这种情况下,您可能并不担心单元测试框架会污染全局范围。
此外,如果您必须执行以下操作,将很难编写单元测试:
Jasmine.functions.unit.testing.basic.it("should do this", function() {
// etc.
});
这有点夸张,但你明白了。
众所周知,声明过多的全局函数或变量不是一个好习惯。但是在Jasmine和Mocha中,像"describe"和"it"这样的函数,为什么偏爱全局函数呢?也许我还没有完全理解他们? 请帮忙!
主要的答案是因为 write.They 更容易和更快也可能用于没有模块的环境,比如浏览器,所以如果你加载 jasmine,那么全局是唯一的访问 jasmine 逻辑的方法。
在这种情况下也会出现这种情况,因为编写 Jasmine 和 Mocha 测试的风格适合声明性语法,因此您几乎可以将 describe
和 it
作为测试语法,而不是而不是 JS 函数。
全局函数并不总是坏的,它只是取决于上下文。
在 "normal" Web 应用程序的上下文中,如果不在本地定义内容,则很容易污染全局范围。这就是我们使用闭包、对象字面量等东西的原因。
Jasmine 和 Mocha 使用全局函数,因为这是最简单的,全局函数直接定义了这些框架的独特语法。在这种情况下,您可能并不担心单元测试框架会污染全局范围。
此外,如果您必须执行以下操作,将很难编写单元测试:
Jasmine.functions.unit.testing.basic.it("should do this", function() {
// etc.
});
这有点夸张,但你明白了。