摩卡无法与Nightwatch一起运行 [英] Mocha unable to run with Nightwatch

查看:104
本文介绍了摩卡无法与Nightwatch一起运行的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用nighwatch.js,硒和chromedriver运行摩卡

我可以使用describe及其它来运行,但是我正在进行动态测试,因此我需要使用以下方式进行调用,但是我无法使摩卡在夜间使用这种方式运行

"use strict";

var nightwatch = require('nightwatch');

var Mocha = require('mocha');
var Test = Mocha.Test;
var Suite = Mocha.Suite;

var mocha = new Mocha();
var suite = Suite.create(mocha.suite, 'Search Box');

suite.addTest(new Test('I\'m a dynamic test', function (done) {
    var client = nightwatch.initClient({
        silent : true
    });
    var browser = client.api();
    browser.url(browser.launch_url);
    client.start(done);
}));

mocha.run();

这是错误 正在启动硒服务器...已启动-PID:122624

0 passing (0ms)

  Search Box
    1) I'm a dynamic test

There was an error while starting the test runner:

Error: Uncaught, unspecified "error" event. ([object Object])
    at Nightwatch.<anonymous> (E:\gitwork\AAPT-SPZA\src\frontEnd\node_modules\nightwatch\lib\runner\clientmanager.js:66:1
    at HttpRequest.<anonymous> (E:\gitwork\AAPT-SPZA\src\frontEnd\node_modules\nightwatch\lib\index.js:501:10)
    at ClientRequest.<anonymous> (E:\gitwork\AAPT-SPZA\src\frontEnd\node_modules\nightwatch\lib\http\request.js:174:12)

如何解决此问题并使Mocha与Nightwatch一起运行?

解决方案

我使用类似于下面的格式,使用Mocha在Nightwatch.js中实现动态测试.下面的示例不是真正的测试,因此不要尝试运行它,但是它应该使您对如何进行测试有了一个很好的了解.测试结果全部显示为具有不同断言的不同测试. conf文件除了将mocha设置为测试运行程序外,应该看起来像通常一样.

const async = require('async');
const languages = [{
    name: 'english',
    currency: '$'
    }, {
    name: 'german',
    currency: '€'
}]; 
describe('An example test', () => {
   async.each(languages, function (language) {
    it(`When I click the ${language.name} link my page should be in ${language.name}`, (browser) => {
        browser.url('http://www.google.com');
        homePage.click(`@${language.name}Link`);
        homePage.expect.element('#sub-title').text.to.equal(`Your language is ${language.name}`);
    });
   });
})

注意:使用异步库之类的东西运行异步循环非常重要,守夜人不会为您的每个异步运行正常,这会导致很多错误. /p>

I'm running mocha with nighwatch.js, selenium and chromedriver

I'm able to run with describe, and it, but I'm making a dynamic tests, so I need use the following way to invoke, but I'm unable to get mocha running this way with nightwatch

"use strict";

var nightwatch = require('nightwatch');

var Mocha = require('mocha');
var Test = Mocha.Test;
var Suite = Mocha.Suite;

var mocha = new Mocha();
var suite = Suite.create(mocha.suite, 'Search Box');

suite.addTest(new Test('I\'m a dynamic test', function (done) {
    var client = nightwatch.initClient({
        silent : true
    });
    var browser = client.api();
    browser.url(browser.launch_url);
    client.start(done);
}));

mocha.run();

Here's the error Starting selenium server... started - PID: 122624

0 passing (0ms)

  Search Box
    1) I'm a dynamic test

There was an error while starting the test runner:

Error: Uncaught, unspecified "error" event. ([object Object])
    at Nightwatch.<anonymous> (E:\gitwork\AAPT-SPZA\src\frontEnd\node_modules\nightwatch\lib\runner\clientmanager.js:66:1
    at HttpRequest.<anonymous> (E:\gitwork\AAPT-SPZA\src\frontEnd\node_modules\nightwatch\lib\index.js:501:10)
    at ClientRequest.<anonymous> (E:\gitwork\AAPT-SPZA\src\frontEnd\node_modules\nightwatch\lib\http\request.js:174:12)

How to fix this and get Mocha running with Nightwatch?

解决方案

I used a format similar to the below to achieve dynamic tests in Nightwatch.js using Mocha. The below example isn't a real test so don't try to run it but it should give you a good idea of how to go about it. The test results all show up as different tests with different assertions. The conf file should look like it does normally besides setting mocha as the test runner.

const async = require('async');
const languages = [{
    name: 'english',
    currency: '$'
    }, {
    name: 'german',
    currency: '€'
}]; 
describe('An example test', () => {
   async.each(languages, function (language) {
    it(`When I click the ${language.name} link my page should be in ${language.name}`, (browser) => {
        browser.url('http://www.google.com');
        homePage.click(`@${language.name}Link`);
        homePage.expect.element('#sub-title').text.to.equal(`Your language is ${language.name}`);
    });
   });
})

Note: It's extremely important to run an async loop using something like the async library, nightwatch won't run a normal for each asynchronously for you and it will result in a lot of errors.

这篇关于摩卡无法与Nightwatch一起运行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆