标签: mocha.js

如何在 describe() 的 before() 块中动态生成 Mocha 测试?

我正在创建一个 mocha 测试套件,它正在测试我们的 nwjs 应用程序正在调用的命令行实用程序,该实用程序获取文件并生成输出 json 文件。我有数千种输入文件和我想要生成的测试 (it()s) 的组合,这取决于 cmdline 实用程序的 json 输出的内容。

Mocha 似乎要求我预先创建所有 it() ,但这意味着需要预先运行这些脚本并捕获 json 输出。我希望这样做:

'use strict';
const path = require('path');
const glob = require('glob');
const expect = require('sharedjs/chai-wrapper').expect;
const utils = require('sharedjs/utils');

describe('Generated Tests:', function() {
  let testNum = 0;
  let globOpts = { nodir: true }
  let type1files = glob.sync(path.join(filetype1_dir, '*'), globOpts);
  let type2files = glob.sync(path.join(filetype2_dir, '*'), globOpts);
  for (let i = 0; i < type1files.length; i++) {
    for (let j = 0; j …
Run Code Online (Sandbox Code Playgroud)

mocha.js node.js chai

5
推荐指数
1
解决办法
1633
查看次数

详细报告 Cypress/Mochawesome

有没有人在使用Mochawesome作为报告引擎从 Cypress 测试中生成好的详细报告方面有很多经验?

我已经关注了 Mochawesome GIT 页面上的信息,但我得到的信息相当乏味!!

当前报告

我希望能够包含奇怪的屏幕截图和断言的输出 - 这是当前cypress.json文件......

{
 "projectId": "haw8v6",
"baseUrl": "https://obmng.dbm.guestline.net/",
"chromeWebSecurity": false,
"reporter" : "mochawesome",
 "reporterOptions" : {
"reportFilename" : "DBM Smoke-Test",
"overwrite": true,
"inline": true

}
}
Run Code Online (Sandbox Code Playgroud)

我一直在玩弄,var addContext = require('mochawesome/addContext');但几乎没有快乐。

感激地收到建议。

谢谢

根据下面的要求 - 非常基本的例子 addContext

var addContext = require('mochawesome/addContext');

describe('DBM Smoketests', function() {
it('E2E Hotel2 WorldPay System', function() {
    cy.visit('https://obmng.dbm.guestline.net/');


                    cy.url().should('include','/obmng.dbm');
                    addContext(this,'URL is correct');

 //loads hotel 2 
    cy.get('.jss189 > div > .jss69 > .jss230').click();
Run Code Online (Sandbox Code Playgroud)

mocha.js cypress

5
推荐指数
1
解决办法
4321
查看次数

ShallowWrapper 只能包装有效元素 - Enzyme Reactjs

我正在为组件编写测试以测试其功能之一,但出现错误: ShallowWrapper can only wrap valid elements

组件文件如下—— Panel.jsx(简体):

class Panel extends Component {
  static propTypes = {
    ...
  };

  static defaultProps = {
    ...
  };

  constructor(props) {
    super(props);
    ...
    this.makeConfigArray = this.makeConfigArray.bind(this);
    this.filterSelected = this.filterSelected.bind(this);
  }

  makeConfigArray() {
    ...
  }

  filterSelected(filters) {
    ...
  }

  render() {
    return (
      <div>
        <ReactFilterSentence
          filters={this.makeConfigArray()}
          label="Filter Page"
          isPersistent
          onChange={(...args) => this.filterSelected(args)}
        />

        <span className="page-filter__config-form-separator" />
      </div>
    );
  }
}

export default Panel;
Run Code Online (Sandbox Code Playgroud)

测试文件如下 - panel-test.jsx

import React from 'react';
import { …
Run Code Online (Sandbox Code Playgroud)

javascript mocha.js chai reactjs enzyme

5
推荐指数
1
解决办法
4341
查看次数

Mocha.Testfunction 中的 [mochawesome] addContext 问题

想在 mocha 测试函数中添加额外的上下文,但 addContext 不起作用。

describe('Test', function () {
    before('before', function () {
        addContext(this, 'context before all'); <-- Not working
      }); 
    after('after', function () {
        addContext(this, 'context after all'); <-- Not working
      }); 


it('Call just a working test API', function () {

    var test=this;
    addContext(this, 'Hello1 (this) !!!!');            <-- Working
    addContext(test, 'Hello2 (test) !!!!');            <-- Working
    unirest.post('http://mockbin.com/request')
    .headers({'Accept': 'application/json', 'Content-Type': 
    'application/json'})
    .send({ "parameter": 23, "foo": "bar" }).end(function (response) {
        console.log('In reponse function');
        addContext(test, 'Hello3 !!!!');            <-- Not working
        addContext(test, '' …
Run Code Online (Sandbox Code Playgroud)

javascript mocha.js selenium-webdriver

5
推荐指数
1
解决办法
598
查看次数

找不到来源:`未捕获的语法错误`(仅发生在柏树中)

寻找有关如何查明无效/意外令牌的实际来源的建议。

我正在用 cypress 运行测试,并且大部分时间(虽然不一致),我从我的所有测试中都会收到这个错误。

Uncaught SyntaxError: Invalid or unexpected token

This error originated from your application code, not from Cypress.

When Cypress detects uncaught errors originating from your application it will automatically fail the current test.

This behavior is configurable, and you can choose to turn this off by listening to the 'uncaught:exception' event.

https://on.cypress.io/uncaught-exception-from-application
Run Code Online (Sandbox Code Playgroud)

所以让我们说清楚;我明白这是我的应用程序代码的问题,而不是我的测试代码。我的问题是我还没有看到任何指向语法错误实际位置的信息。此外,我在 chrome 72(不是通过 cypress)中运行该应用程序并且我没有问题。当我通过 cypress 运行应用程序时似乎只有一个问题(也使用 chrome 72,因为我在运行 cypress 规范时使用)。--browser chrome

我已经在我的测试中添加了fail, …

javascript mocha.js chai cypress

5
推荐指数
1
解决办法
1790
查看次数

打字稿单元测试私有和受保护的方法

我希望能够测试私有Typescript方法。请跳过你的讲座why this is a bad idea。我听说过。

这是一个演示代码:

class MyClass {
    age: number

    private ageAsString(): string {
        return '15'
    }
}
Run Code Online (Sandbox Code Playgroud)

以下是我在测试文件中的选项:

1 -//@ts-ignore允许 TS 编译此行的写入。当您调用 200 x expect()s时,这会很快变得不方便。但是我找不到基于文件的方法来执行此块。

it('Test ageAsString', () => {
    // @ts-ignore
    expect(new MyClass().ageAsString()).to.equal('15')
})
Run Code Online (Sandbox Code Playgroud)

2 - 将类对象转换为any对象。这会禁用我从 TS 和我的 IDE 获得的自动完成和重构功能。一开始这似乎是个好主意,但 1 个月后,它要么会破坏我的 200 个测试用例,要么会产生一些无法预料的错误。

it('Test ageAsString', () => {
    const anyClass: any = new MyClass
    expect(anyClass.ageAsString()).to.equal('15')
})
Run Code Online (Sandbox Code Playgroud)

3 - 可以使用数组访问,它可以工作,但会产生与 #2 相同的问题。

it('Test ageAsString', () => …
Run Code Online (Sandbox Code Playgroud)

mocha.js jasmine webstorm chai typescript

5
推荐指数
1
解决办法
3729
查看次数

React 测试库 fireEvent.change 不适用于 fireEvent.submit

tldr; fireEvent.change 有效,但在表单提交时,未在提交处理程序中找到新值。

假设我们有一个简单的形式:

// MyForm.tsx
class MyForm extends React.Component {
  state = { data: '123' }
  handleChange = (e: any) => {
    // This never gets fired in the test, why?
    console.log('HandleChange Fired', e.target.value)
    this.setState({ data: e.target.value })
  }
  handleSubmit = () => {
    console.log('************* HandleSubmit Fired **************', this.state)
  }
  render() {
    return (
      <form name="address" onSubmit={this.handleSubmit}>
        <input name="title" value={this.state.data} onChange={this.handleChange} />
        <button type="submit">Submit</button>
      </form>
    )
  }
}
Run Code Online (Sandbox Code Playgroud)

和断言表单提交值的测试是准确的:

// MyForm.spec.tsx
import React from 'react'
import { expect } …
Run Code Online (Sandbox Code Playgroud)

testing mocha.js reactjs react-testing-library

5
推荐指数
0
解决办法
1621
查看次数

如何与记者一起运行摩卡测试?

当我运行npm test它时输出:

 mocha ./tests/ --recursive --reporter mocha-junit-reporter
Run Code Online (Sandbox Code Playgroud)

并且所有测试运行良好。但是当我尝试调用 mocha 时,./tests/flickr/mytest --reporter junit-reporter我得到了:

 Unknown "reporter": junit-reporter
Run Code Online (Sandbox Code Playgroud)

如何正确传递?

javascript mocha.js npm

5
推荐指数
1
解决办法
5010
查看次数

使用 ES6 样式导入进行 mocha 测试

我正在尝试使用文件中的一些 ES6 样式导入运行 Mocha 测试,但我不断收到错误消息:

import assert from 'assert';
       ^^^^^^

SyntaxError: Unexpected identifier
Run Code Online (Sandbox Code Playgroud)

我试图与这两个调用摩卡 mocha --require @babel/register --recursivemocha --require babel-register --recursive ,但误差不会消失。

运行 ES6 风格的 Mocha 测试的正确方法是什么?

javascript mocha.js

5
推荐指数
2
解决办法
3506
查看次数

如何在用 Typescript 编写的浏览器上运行 Mocha 测试

我是NodeJS和 的新手TypeScript。所以,我现在有点卡住了。

我的项目配置是这样的。

+------------+---------------------------+
|            |          purpose          |
+------------+---------------------------+
| Webpack    | create a bundle JS file   |
| TypeScript | ES5 transpile             |
| Mocha      | TDD test                  |
+------------+---------------------------+
Run Code Online (Sandbox Code Playgroud)

我正在尝试运行MochaTypeScript.
这个测试是使用XMLHttpRequest模块。

我的项目结构如下。

|_ dist (for bundle file)
|_ script
|   \_ lib
|       \_ ajax.ts (my module)
\_ test
    \_ script
        \_ lib
            \_ ajax.spec.ts (to test my module)
Run Code Online (Sandbox Code Playgroud)

我发现该XMLHttpRequest模块适用于浏览器。
我可以替换它来安装 npm 模块xmlhttprequest
但是,我需要检查是否已收到响应并已执行回调函数。 …

mocha.js typescript webpack

5
推荐指数
0
解决办法
480
查看次数