我在Javascript / JQuery中有一些项目,但AngularJS对我来说是一个全新的概念。
在我看过的文档中,以下函数出现了很多时间。
describe('PhoneListCtrl', function(){
it('should create "phones" model with 3 phones', function() {
var scope = {},
ctrl = new PhoneListCtrl(scope);
expect(scope.phones.length).toBe(3);
});
});
describe()
和it()
是否合法?从教程文档中我了解到它们是用于测试和模拟,但我仍然不清楚如何运行这些函数,如果它们仅用作“foo”和“foo”。并且' bar'。
答案 0 :(得分:3)
这些来自Jasmine testing framework。 describe
定义了一个测试套件,it
定义了一个"规范"或测试。来自Jasmine文档:
测试套件以调用全局Jasmine函数开始
describe
有两个参数:字符串和函数。字符串是 规范套件的名称或标题 - 通常是正在测试的内容。该 function是一个实现套件的代码块。
关于it
:
通过调用全局Jasmine函数
it
来定义规范, 喜欢describe需要一个字符串和一个函数。该字符串是标题 这个规范和功能是规范,或测试。规范包含一个 或更多期望测试被测代码的状态。
我不熟悉Angular,但我的假设是,这可能在文档中用于说明目的,其风格类似于各种代码公案所使用的样式,例如Ruby Koans,其中测试用于说明了语言的某些方面是如何起作用的。不过我最后一部分可能是错的。
答案 1 :(得分:2)
describe
用于范围测试,it
用于声明测试。当测试失败时,在您的情况下,您会看到
'should create "phones" model with 3 phones' FAILED!
接下来是一些失败的断言。提供给it
的字符串为断言提供了上下文。
describe
可用于将多个测试范围限定为单个主题。包括before
和after
函数。这在许多测试库中很常见,而不仅仅是在javascript中。 Mocha,Jasmine,还有rspec(来自Ruby)使用类似的方法。