jest(jasmine)是否可以为测试的当前执行名称或在测试内部进行描述?
使用茉莉花:如何获得当前测试的名称不再起作用,或者至少在玩笑中没有作用。
例如
test('Error missing body', (done) => {
console.log('Currently executing: ' + REFERENCE_TO_TEST_NAME);
done();
});
Run Code Online (Sandbox Code Playgroud)
谢谢
我在测试中模拟了一个类的静态函数,但我会影响其他测试。由于静态函数的性质,代码是:
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()为其类定义的原始函数?
堆栈:\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
我们最近将所有 API 的测试从 Mocha 切换到 Jest。\n我们有大约 90 个测试,其中一半需要同步运行,因为它们使用我们的测试数据库(在它们之间运行种子),所以我们必须使用 --runInBand。
\n\n不幸的是,我无法分享我的代码,因为它是私有的。
\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> …
我正在处理两个几乎相同的测试用例,我应该断言期望两个 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) 我想为ReactJS中使用会话存储的一个动作编写开玩笑的单元测试用例,但我收到未定义sessionStorage的错误。
任何解决方案如何处理?
我目前遇到的错误是我几个小时都无法解决的。
我正在使用以下版本:
节点: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) 我需要执行一个参数,它是一个笑话模拟的回调。
在 jest 文档中,他们的回调示例是关于测试第一个回调的。我需要测试嵌套回调中的行为。在 Promise 的例子中,他们使用resolves和rejects。嵌套回调有没有类似的东西?我目前正在执行模拟调用参数,我不确定这是否是推荐的方式。
被测系统:
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)
我的问题在上面代码的注释中。这是执行回调的推荐方法吗,这是模拟函数的参数?
我有以下课程:
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?有没有办法将这个装饰器放在抽象类本身中,这样我就不必在所有实现中编写它?
谢谢你!
我是 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)
我的代码与 …
当我使用 Edge/IE 单击某处时,我希望能够检测到路径。对于所有其他浏览器,我可以使用event.composedPath(),但 Edge 和 IE 不支持它。
我一直在环顾四周,我只发现页面不鼓励使用path和使用composedPath(),但我没有找到任何关于 Edge 的参考。
请帮忙!
我有一个帮助器,只是抛出一个错误:
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没有告诉我任何事情:
这是为什么以及如何解决它?
我正在使用打字稿中的 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) jestjs ×9
javascript ×3
node.js ×2
typescript ×2
angular ×1
express ×1
jasmine ×1
koa ×1
material-ui ×1
mocking ×1
ngrx ×1
ngrx-effects ×1
react-select ×1
reactjs ×1
sequelize.js ×1
ts-jest ×1
unit-testing ×1