首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >ValidateUsername是只读的|带有Jest/酶的TS

ValidateUsername是只读的|带有Jest/酶的TS
EN

Stack Overflow用户
提问于 2019-06-11 02:16:49
回答 1查看 786关注 0票数 0

我有一个小的实用函数,我正在用Jest和酶对我的React-TS项目进行一些测试。在项目中JS文件中,我得到以下错误:

代码语言:javascript
复制
"validateUsername" is read-only.

这是实用程序本身:

代码语言:javascript
复制
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);
    });

下面是对它的测试:

代码语言:javascript
复制
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错误。你们能帮帮我吗?

EN

回答 1

Stack Overflow用户

发布于 2019-11-13 00:38:33

您可能已经找到了解决方案,但问题是您导入validateUsername,然后在beforeEach()中重新定义它。

我不知道为什么你需要beforeEach()中的代码,但是如果你想访问初始的validateUsername +享受模拟的好处,我建议你使用jest.spyOn

beforeEach()中,如果你需要的话,你可以在测试之间清除模拟。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56531551

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档