量角器中spec.js文件中的describe()和it()有什么区别?

时间:2017-09-12 07:55:54

标签: angularjs testing jasmine protractor

在量角器中的spec.js文件中编写测试用例时,2个字段显示的是describe()和it()。究竟是什么用途以及何时使用?

// spec.js

describe('Protractor Demo App', function() {
  it('should have a title', function() {
    ..
  });
});

4 个答案:

答案 0 :(得分:2)

通过阅读本希望你会知道你的答案。

spec.js关于(如何 Jasmine 用于测试JavaScript代码的行为驱动开发框架如何工作)

它有两个主要功能

  

套件 describe 您的测试

     

测试套件以调用全局Jasmine函数开始   用两个参数描述:字符串和函数。字符串是   规范套件的名称或标题 - 通常是正在测试的内容。该   function是一个实现套件的代码块。

     

<强>功能

     

通过调用全局Jasmine函数it来定义规范,   像describe一样需要一个字符串和一个函数。字符串是标题   规范和功能是规范,或测试。规范包含一个   或者更多期望来测试代码的状态。期待   在Jasmine中是一个无论是真还是假的断言。一个规格   所有真正的期望都是过时的规范。带有一个或多个false的规范   期望是一个失败的规范。

describe("A suite", function() {
  it("contains spec with an expectation", function() {
     expect(true).toBe(true);
  });
});
     

它的正常功能

     

由于describeit块是函数,因此它们可以包含任何块   实现测试所必需的可执行代码。 JavaScript范围   规则适用,因此describe中声明的变量可供任何人使用   <{1}}阻止套件内部。

有关详细信息,请参阅this link

答案 1 :(得分:0)

it是一个带逻辑的实际测试。 describe是一个测试容器,允许您将测试分成多个部分。 describe块可以包含作用于应用程序相同部分的测试或具有共同点的测试,例如:

describe('Menu tests', function() {
    it('should open menu', function() {
    });
    it('should select menu', function() {
    });
    it('should close menu', function() {
    });
});

describe公开了一些功能,例如我们:

  • beforeAll - 在第一次测试之前运行。
  • beforeEach - 在每次测试前运行。

还有更多。

it无法或至少不应在其内部包含describeit块,而describe应包含it块以及帮助块(例如beforeAll)。

答案 2 :(得分:0)

它的BDD接口(行为驱动的开发)。

  

describe用于描述操作。顶级描述可用于描述整个套件,其中包含一个可以使用的单词。

describe("getUser", function() {
  ...
});
  

it块只包含在闭包范围内定义的对象的断言。

it("should have status code 200", function() {
  assert.equal(res.statusCode, 200, "statusCode is not 200")
});

答案 3 :(得分:0)

根据我的理解,describe是对你的功能的描述,it是你的步骤,并期望其功能。

这里更好地举例说明:https://docs.angularjs.org/guide/e2e-testing