在开玩笑中显示每个test.each
测试的自定义名称的一种简单方法,是将文本名称放在该方法输入表的每个数组的第一个元素中,并将其用作test.each
方法中的名称-('%s', (testname, req, expectedBookmark)
,如以下片段一样:
const showdown = require('showdown');
const Bookmark = require('../../model/bookmark');
const bookmarkRequestMapper = require('./bookmark-request.mapper');
jest.mock('showdown', () => {
const makeHtml = jest.fn(() => '<p>This is a test bookmark</p>');
return {
Converter: jest.fn().mockImplementation(() => ({makeHtml})),
};
});
describe('toBookmark', () => {
const req = {
body: {
_id: '123',
name: 'Test Bookmark',
location: 'https://example.com',
language: 'en',
description: 'This is a test bookmark',
tags: ['test'],
public: true,
},
params: {
userId: '456',
},
};
beforeEach(() => {
showdown.Converter.mockClear();
showdown.Converter().makeHtml.mockClear();
req.body.descriptionHtml = undefined;
req.body.youtubeVideoId = undefined;
req.body.stackoverflowQuestionId = undefined;
});
test.each([
[
'should return a new bookmark',
req,
new Bookmark({
_id: 123,
name: 'Test Bookmark',
location: 'https://example.com',
language: 'en',
description: 'This is a test bookmark',
descriptionHtml: '<p>This is a test bookmark</p>',
tags: ['test'],
public: true,
userId: '456',
likeCount: 0,
youtubeVideoId: null,
stackoverflowQuestionId: null,
})
],
[
'should set youtubeVideoId if it is provided',
{...req,
body : {
...req.body,
youtubeVideoId: 'abcd1234'
}
},
new Bookmark({
_id: '123',
name: 'Test Bookmark',
location: 'https://example.com',
language: 'en',
description: 'This is a test bookmark',
descriptionHtml: '<p>This is a test bookmark</p>',
tags: ['test'],
public: true,
userId: '456',
likeCount: 0,
youtubeVideoId: 'abcd1234',
stackoverflowQuestionId: null,
})
],
[
'should set stackoverflowQuestionId if it is provided',
{...req,
body : {
...req.body,
stackoverflowQuestionId: 123456
}
},
new Bookmark({
_id: '123',
name: 'Test Bookmark',
location: 'https://example.com',
language: 'en',
description: 'This is a test bookmark',
descriptionHtml: '<p>This is a test bookmark</p>',
tags: ['test'],
public: true,
userId: '456',
likeCount: 0,
youtubeVideoId: null,
stackoverflowQuestionId: 123456,
})
],
])('%s', (testname, req, expectedBookmark) => {
const resultBookmark = bookmarkRequestMapper.toBookmark(req);
expect({...resultBookmark.toObject(), _id: {}}).toEqual({...expectedBookmark.toObject(), _id: {}});
expect(showdown.Converter).toHaveBeenCalledTimes(1);
expect(showdown.Converter().makeHtml).toHaveBeenCalledTimes(1);
expect(showdown.Converter().makeHtml).toHaveBeenCalledWith('This is a test bookmark');
});
});
项目:codever
- 文件:bookmark-request.mapper.test.js
当然,您可以自由显示其他数据...
参考 -
https://jestjs.io/docs/api#testeachtablename-fn-timeout
与Codever的‸分享。使用ðcopy to mine功能将其添加到您的个人片段集合中。
codever 是Githubâð
的开源