AngularJS it()和describe()函数的用途是什么?

时间:2016-11-17 02:53:52

标签: javascript angularjs

我在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'。

2 个答案:

答案 0 :(得分:3)

这些来自Jasmine testing frameworkdescribe定义了一个测试套件,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可用于将多个测试范围限定为单个主题。包括beforeafter函数。这在许多测试库中很常见,而不仅仅是在javascript中。 Mocha,Jasmine,还有rspec(来自Ruby)使用类似的方法。