小编xav*_*ier的帖子

获取当前执行的描述/测试名称

jest(jasmine)是否可以为测试的当前执行名称或在测试内部进行描述?

使用茉莉花:如何获得当前测试的名称不再起作用,或者至少在玩笑中没有作用。

例如

test('Error missing body', (done) => {
  console.log('Currently executing: ' + REFERENCE_TO_TEST_NAME);
  done();
});
Run Code Online (Sandbox Code Playgroud)

谢谢

jasmine jestjs

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

如何在玩笑中将模拟函数恢复为原始值?

我在测试中模拟了一个类的静态函数,但我会影响其他测试。由于静态函数的性质,代码是:

  test('A', async () => {
    expect.assertions(2);
    let mockRemoveInstance = jest.fn(() => true);
    let mockGetInstance = jest.fn(() => true);
    User.removeInstance = mockRemoveInstance;
    User.getInstance = mockGetInstance;
    await User.getNewInstance();
    expect(mockRemoveInstance).toHaveBeenCalled();
    expect(mockGetInstance).toHaveBeenCalled();
  });

  test('B', () => {
    let mockRemoveInstance = jest.fn();
    const Singletonizer = require('../utilities/Singletonizer');
    Singletonizer.removeInstance = mockRemoveInstance;
    User.removeInstance();
    expect.hasAssertions();
    expect(mockRemoveInstance).toHaveBeenCalled();
  });
Run Code Online (Sandbox Code Playgroud)

B测试中User.removeInstance()仍然被测试嘲笑A,如何将输入重置removeInstance()为其类定义的原始函数?

unit-testing jestjs

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

jest 内存泄漏(node、koa、sequelize)

堆栈:\n\n System:\n OS: macOS High Sierra 10.13.4\n CPU: x64 Intel(R) Core(TM) i7-4770HQ CPU @ 2.20GHz\n Binaries:\n Node: 8.1.4 - ~/.nvm/versions/node/v8.1.4/bin/node\n npm: 6.0.0 - ~/.nvm/versions/node/v8.1.4/bin/npm\n npmPackages:\n jest: ^23.0.1 => 23.0.1\n sequelize: ^4.37.10\n pg: ^7.4.3\n koa: ^2.3.0\n babel-jest: ^22.4.3\n

\n\n

一、前言

\n\n

我们最近将所有 API 的测试从 Mocha 切换到 Jest。\n我们有大约 90 个测试,其中一半需要同步运行,因为它们使用我们的测试数据库(在它们之间运行种子),所以我们必须使用 --runInBand。

\n\n

不幸的是,我无法分享我的代码,因为它是私有的。

\n\n

2.问题

\n\n

一项一项地运行测试没问题,然后我尝试一次运行所有测试,但事情变得很糟糕。\n使用 --logHeapUsage,上下文内存似乎不会被 GC 导致 Javascript 堆内存不足。

\n\n

我尝试使用新选项 --detectOpenHandles 来查看什么会阻止 GC 工作,但结果是这样的:\n \n \xe2\x97\x8f PROMISE\n at Promise.catch (<anonymous>)\n at node_modules/core-js/library/modules/es6.promise.js:244:30\n at Object.<anonymous>.module.exports (node_modules/core-js/library/modules/_iter-detect.js:19:5)\n at Object.<anonymous> …

node.js sequelize.js koa jestjs

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

无法理解的单元测试使用 Jest 导致错误

我正在处理两个几乎相同的测试用例,我应该断言期望两个 NgRx 效果返回一个布尔值流。在第一个测试用例中一切都按预期工作,尽管对第二个测试用例执行相同的操作,但我无法使其按预期工作。无论我做什么,收到的值总是一个空数组:

expect(received).toEqual(expected) // deep equality
    - Expected
    + Received

    - Array [
    -   Object {
    -     "frame": 10,
    -     "notification": Notification {
    -       "error": undefined,
    -       "hasValue": true,
    -       "kind": "N",
    -       "value": true,
    -     },
    -   },
    - ]
    + Array []
Run Code Online (Sandbox Code Playgroud)

工作测试

logger.effects.spec.ts:

expect(received).toEqual(expected) // deep equality
    - Expected
    + Received

    - Array [
    -   Object {
    -     "frame": 10,
    -     "notification": Notification {
    -       "error": undefined,
    -       "hasValue": true,
    -       "kind": "N",
    -       "value": true, …
Run Code Online (Sandbox Code Playgroud)

jestjs ngrx ngrx-effects angular

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

ReferenceError:在玩笑单元测试用例中未定义sessionStorage

我想为ReactJS中使用会话存储的一个动作编写开玩笑的单元测试用例,但我收到未定义sessionStorage的错误。

任何解决方案如何处理?

reactjs jestjs

4
推荐指数
1
解决办法
3668
查看次数

NodeJS:找到错误:听EADDRINUSE ::: 3000?


我目前遇到的错误是我几个小时都无法解决的。
我正在使用以下版本:
节点:8.11.3
Express:4.16.3
Jest:22.2.2
猫鼬:5.2.3

我正在尝试使用Jest 做一些集成测试,并且我有2个带有测试的文件。
在每个文件中,我写了以下内容:

// Create the server before each test
beforeEach(() => {
    server = require('../../index');
});

// Close the server after each test
afterEach(async () => {
    if (server) {
        server.close();
    }
});
Run Code Online (Sandbox Code Playgroud)

index.js我有以下(这还不是全部的代码,但对于错误相关的代码):

// Listen to the server
const port = config.PORT || process.env.PORT || 3000;
module.exports = app.listen(port, () => {
   winston.info(`Listening to port ${port}...`);
});
Run Code Online (Sandbox Code Playgroud)

当我跑步时,我npm test 总是得到这个异常:

**listen EADDRINUSE :::3000**

  10 | // Listen to the …
Run Code Online (Sandbox Code Playgroud)

node.js express jestjs

4
推荐指数
1
解决办法
6800
查看次数

执行模拟笑话回调参数

我需要执行一个参数,它是一个笑话模拟的回调。

在 jest 文档中,他们的回调示例是关于测试第一个回调的。我需要测试嵌套回调中的行为。在 Promise 的例子中,他们使用resolvesrejects。嵌套回调有没有类似的东西?我目前正在执行模拟调用参数,我不确定这是否是推荐的方式。

被测系统:

function execute() {
  globals.request.post({}, (err, body) => {
    // other testable behaviors here.
    globals.doSomething(body);
    // more testable behaviors here. that may include more calls to request.post()
  });
}
Run Code Online (Sandbox Code Playgroud)

考试:

globals.request.post = jest.fn();
globals.doSomething = jest.fn();

execute();

// Is this the right way to execute the argument?
globals.request.post.mock.calls[0][1](null, bodyToAssertAgainst);

expect(globals.doSomething.mock.calls[0][1]).toBe(bodyToAssertAgainst);
Run Code Online (Sandbox Code Playgroud)

我的问题在上面代码的注释中。这是执行回调的推荐方法吗,这是模拟函数的参数?

javascript jestjs

3
推荐指数
1
解决办法
4129
查看次数

typescript:抽象方法中的装饰器

我有以下课程:

export abstract class CanDeactivateComponent {
  abstract canLeavePage(): boolean;
  abstract onPageLeave(): void;

  @someDecorator
  abstract canDeactivateBeforeUnload(): boolean;

}
Run Code Online (Sandbox Code Playgroud)

我得到了错误A decorator can only decorate a method implementation, not an overload。我知道在这种情况下我不能放置装饰器,但是可以应用哪种解决方法以便我强制@someDecorator之前使用此类的所有实现canDeactivateBeforeUnload?有没有办法将这个装饰器放在抽象类本身中,这样我就不必在所有实现中编写它?

谢谢你!

typescript

3
推荐指数
1
解决办法
3498
查看次数

React-select 菜单被 Dialog Content 和 Dialog Action 组件隐藏

我是 Material UI 和 React 的新手,在其他问题上没有发现 . 我正在尝试使用 React-Select 组件开发对话框材质 UI。问题是 Dialog 上的 react-select 菜单被 Dialog Action 组件隐藏了。 我的对话框组件

react-select 组件下方的这一行是 react-select 渲染的 Paper 组件。

我尝试了一些 CSS 代码,例如 zIndex 和位置,但仍然没有找到显示菜单的方法,或者更好的是,让菜单(Paper 组件)覆盖 Dialog Action 组件。

我的对话框、对话框内容和对话框操作使用以下 className:

 dialog: {
        zIndex:0,
        display:'flex',
        flex:1,
        flexGrow:1,
        flexDirection:'column',
        flexWrap: 'wrap',
        height: 'auto',
    },
Run Code Online (Sandbox Code Playgroud)

对于react-select组件渲染的Menu(Paper Component),我尝试了以下方法:

dialogPaper: {
        zIndex: 0,
        maxHeight:300,
        position: 'absolute',
        overflowY:'auto',
        marginTop: theme.spacing(1),
        left:0, right: 0
    },
    paper: {
        zIndex: 1000,
        maxHeight:300,
        position: 'absolute',
        overflow:'visible',
        overflowY:'auto',
        marginTop: theme.spacing(1),
        left:0, right: 0
    },
Run Code Online (Sandbox Code Playgroud)

我的代码与 …

react-select material-ui

3
推荐指数
1
解决办法
1712
查看次数

Edge 的替代组合路径

当我使用 Edge/IE 单击某处时,我希望能够检测到路径。对于所有其他浏览器,我可以使用event.composedPath(),但 Edge 和 IE 不支持它。

我一直在环顾四周,我只发现页面不鼓励使用path和使用composedPath(),但我没有找到任何关于 Edge 的参考。

请帮忙!

javascript microsoft-edge

3
推荐指数
1
解决办法
1386
查看次数

为什么以下不期望... toThrowError在我的终端中记录任何内容?

我有一个帮助器,只是抛出一个错误:

export const checkPanoramaFormat = (panorama) => {
  if (!panorama.objectId) {
    throw new Error('panorama id is required')
  }
}
Run Code Online (Sandbox Code Playgroud)

这是我的测试:

import {
  checkPanoramaFormat
} from '@/common/helpers'

describe('checkPanoramaFormat', () => {
  const panorama = { anotherProp: '1' }

  it('creates clone', () => {
    expect(checkPanoramaFormat(panorama)).toThrowError('hshshs')
  })
})
Run Code Online (Sandbox Code Playgroud)

我希望终端能告诉我预期和我得到了什么.但我一无所获.事实上,Jest没有告诉我任何事情:

在此输入图像描述

这是为什么以及如何解决它?

javascript jestjs

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

在使用 jest/ts-jest 模拟打字稿中的类时,我收到“TypeError: "X".default is not a constructor。”

我正在使用打字稿中的 jest/ts-jest 编写单元测试,我正在尝试模拟一个类,但我收到了 TypeError。“storage_1.default 不是构造函数”。

这是我嘲笑班级的方式。

index.test.ts

import GetAdaptiveCard from '../../GetAdaptiveCard/index'

const mockGetAdaptiveCard = jest.fn();
jest.mock('../../utils/storage', () => {
    return jest.fn().mockImplementation(() => {
        return {
            getAdaptiveCard: mockGetAdaptiveCard
        }   
    })
})
test('http trigger should return adaptive card', async () => {
....
    await GetAdaptiveCard(context, req);//calls AdaptiveCardStorage. The class I am mocking in "../../utils/storage"
...
});

Run Code Online (Sandbox Code Playgroud)

索引.ts

import AdaptiveCardsStorage from '../utils/storage';
...
const storage: AdaptiveCardsStorage = new AdaptiveCardsStorage(); //This is where I get the TypeError
const adaptiveCard: string = await storage.getAdaptiveCard(userID, cardName); …
Run Code Online (Sandbox Code Playgroud)

mocking typescript jestjs ts-jest

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