我有一个小的实用函数,我正在用Jest和酶对我的React-TS项目进行一些测试。在项目中JS文件中,我得到以下错误:
"validateUsername" is read-only.
这是实用程序本身:
export const validateUsername = value =>
listUsers()
.then(({ data }) => {
if (Array.isArray(data) && data.find(userData => userData.username === value)) {
throw 'Username already exists';
}
})
.catch(error => {
throw serverErrorResponseUtil(error);
});
下面是对它的测试:
describe('Validate Username', () => {
const validateUsernameFn = jest.fn();
beforeEach(() => {
validateUsername = validateUsernameFn;
});
it('Should throw an error if the given value exists', async () => {
try {
await validateUsername('username');
} catch (e) {
expect(e).toEqual('Username already exists');
}
});
it('Accept the data if the passed userName is unique', async () => {
expect(() => validateUsername('Username is unique')).not.toThrow();
});
});
我在这里得到了错误:validateUsername = validateUsernameFn;
。问题是这个文件是一个js文件。为什么我得到一个关于只读的ts错误。你们能帮帮我吗?
发布于 2019-11-13 00:38:33
您可能已经找到了解决方案,但问题是您导入validateUsername
,然后在beforeEach()
中重新定义它。
我不知道为什么你需要beforeEach()
中的代码,但是如果你想访问初始的validateUsername
+享受模拟的好处,我建议你使用jest.spyOn
。
在beforeEach()
中,如果你需要的话,你可以在测试之间清除模拟。
https://stackoverflow.com/questions/56531551
复制相似问题