Aja*_*aur 4 javascript reactjs jestjs enzyme
我正在使用jest编写测试用例。我的一个函数使用uuid,因此它不是纯函数。代码是这样的:
const myFunc = () => {
const a = uuid();
return a;
}
Run Code Online (Sandbox Code Playgroud)
我正在编写我的测试用例:
test('should return a unique id value', () => {
const a = uuid();
expect(myFunc()).toEqual(a);
});
Run Code Online (Sandbox Code Playgroud)
显然它不会工作,因为它每次都会生成一个唯一的 ID。如何为此类功能编写测试用例。
[编辑]
我不想测试这个uuid函数,因为它总是会生成一个新的 id,而且它是一个已经在测试中的库函数。我想测试另一个使用uuid、生成新对象并返回该对象的函数。这个函数被其他一些函数使用等等,这使我无法测试任何一个,因为初始对象的 id 与我在测试时使用的 id 不同。
我发现这真的很好用。
在测试文件的顶部:
// your regular imports here
jest.mock('uuid', () => ({ v4: () => '00000000-0000-0000-0000-000000000000' }));
// describe('test suite here', () => {
Run Code Online (Sandbox Code Playgroud)
在实际代码中:
import { v4 as uuidv4 } from 'uuid';
Run Code Online (Sandbox Code Playgroud)
您可以使用jest.mock以便模拟 的导入uuid,如下所示:
const uuidMock = jest.fn().mockImplementation(() => {
return 'my-none-unique-uuid';
});
jest.mock('uuid', () => {
return uuidMock;
});
Run Code Online (Sandbox Code Playgroud)
该方法的唯一警告是您需要在导入真实文件之前在测试文件中应用模拟。
然后你甚至可以在模拟上断言。
有关更多信息,请阅读jest.mock。
| 归档时间: |
|
| 查看次数: |
4844 次 |
| 最近记录: |