如何使用JEST fn()?

wwwo4jvm  于 2023-03-16  发布在  Jest
关注(0)|答案(1)|浏览(209)

我无法让我的头周围的笑话函数嘲笑。
我的设置:
我有一个对象要测试。在该对象中,我调用一个函数,它 Package 了一个外部API调用。我想模拟'getUser'函数(而不是#getUser ;- ))。

class MyNicelogin {
  constructor(bHardLogin=false) {
    ...
    this.#getUser(oLoginResponse);
    ...
  }
  async #getUser(oLoginResponse=null) {
    ...
    try {
      ...
      this.oUser = await getUser(this.#oLoginResponse.AuthenticationResult.AccessToken);
      ...
    } catch (e) {
      ...
    }
  }
  ...
}

我就知道会这样

const MyNiceLogin = require('../Website/js/MyNiceLogin.js');
  const mockGetUser = jest.fn(() => {return 'true';});
  getUser() = mockGetUser;

  ...

  describe('Test 1', () => {
    test('not logged in user on soft login => not relayed to login page', () => {
      ...
        new MyNiceLogin.MyNiceLogin(true);
        expect(sessionStorage.getItem).toHaveBeenCalledTimes(1);
      ...
    });
  });

  ...

但它的错误为

getUser() = mockGetUser;
  ^
  Invalid left-hand side in assignment expression.

很明显我在设置模拟的时候做错了什么。有人知道吗?

yebdmbv4

yebdmbv41#

我知道了。“新”的部分起作用了:
旧的
用户名= jest.fn(()=〉{返回'true';});获取用户()=模拟获取用户;
新的
全局.getUser = jest.fn(()=〉{返回'true';});

相关问题