包装器函数的开玩笑单元测试示例



我决定将导入的函数包装在一个更通用的函数上,因为我可能会在多个地方使用它。如何编写完全涵盖这段代码的单元测试?

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;

我正在使用开玩笑。

我试过这样的事情:

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);
});
});

我没有运行任何这些,但我认为总体想法会起作用。进行错误测试将非常相似。

相关内容

最新更新