簡體   English   中英

包裝功能的示例笑話單元測試

[英]Example Jest Unit test for a Wrapper Function

我決定將導入的函數包裝在更通用的函數上,因為我可能會在多個地方使用它。 一個人如何編寫一個完全覆蓋這段代碼的單元測試?

import { Auth } from 'aws-amplify';

const signIn = (
  username,
  password,
  successCallback,
  errorCallback,
) => {
  Auth.signIn(username, password)
    .then(user => successCallback(user))
    .catch(err => errorCallback(err));
};

export default signIn;

我正在使用Jest。

我已經嘗試過這樣的事情:

import signIn from './shared';

test('signIn() executes', () => {
  const success = jest.fn(console.log('good!'));
  const fail = jest.fn(console.log('bad!'));

  signIn('john', 'snow', success, fail);

  expect(fail).toHaveBeenCalled();
});

但是我一定不能理解嘲笑或間諜。 有什么建議么?

您可能可以使用類似的方法對其進行測試。 只需存根依賴項,以便您可以控制所有內容。

import signIn from './shared';
import { Auth } from "aws-amplify";
describe("signIn", () => {
    afterEach(() => {
        jest.restoreAllMocks();
    });
    it("invokes the success callback on success", done => {
        const mockUser = {username: "bob", password: "password"};
        // pretend that everything went great, and give back our mock user
        jest.spyOn(Auth, "signIn").mockImplementation((a, b) => {
            return Promise.resolve(mockUser);
        });
        const mockSuccessCb = (user) => {
            expect(user).toBe(mockUser);
            done();
        };
        const mockErrorCb = (err) => {
            // fail the test if this callback is invoked.
            done(err);
        };
        signIn("bob","tom", mockSuccessCb, mockErrorCb);
    });
});

我還沒有執行任何操作,但是我認為總體思路是可行的。 進行錯誤測試將非常相似。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM