2
var Nightmare = require('nightmare');
var expect = require('chai').expect; // jshint ignore:line 

describe('test yahoo search results', function() {
  it('should find the nightmare github link first', function*() {
    var nightmare = Nightmare()
    var breadcrumb = yield nightmare
      .goto('http://yahoo.com')
      .type('input[title="Search"]', 'github nightmare')
      .click('.searchsubmit')
      .wait('.url.breadcrumb')
      .evaluate(function () {
        return document.querySelector('.url.breadcrumb').innerText;
      });
    expect(breadcrumb).to.equal('github.com');
  });
});

为什么这个测试总是评估为真?

即使我更改比较值,此测试也会评估为真。如果我在期望之前添加一个 console.log,它不会打印,这让我觉得测试永远不会被评估,并且对于 chai 来说空响应是正确的。我正在运行 node v4.2.2,以及最新版本的 nightmare 和 expect。我使用 mocha index.js(此文件的名称)从终端运行测试。

4

1 回答 1

4

function*并且yield是一个名为Generators的 ES2015 功能。

在 README 的示例之后还有一个附加说明:

请注意,这些示例使用 Mocha 的mocha-generators包,它启用了对生成器的支持。

因此,您需要安装该软件包并将其添加到您的代码中:

require('mocha-generators').install();

于 2015-11-19T06:38:29.023 回答