Сейчас у меня есть объект, который используется для взаимодействия с моим API api.js
:
export var Auth = (function () {
var Login = async function(username, password) {
//Async login code for interacting with the API
};
return {
Login: Login
}
});
И этот объект импортируется внутри другого файла, login.js
:
import * as API from './api';
export var LoginRequestHandler = function() {
//processess user input, then calls:
try {
await API.Auth().Login(username, password);
} catch(e) {
throw new Error(e);
}
Это мой шутливый тест:
import * as API from '../api';
import * as User from '../user';
jest.mock('../api');
const spy = jest.spyOn(API.Auth(), 'Login');
User.LoginRequestHandler().then(() => {
expect(spy).toHaveBeenLastCalledWith('theUsername', 'thePassword');
}).catch(error => console.log(error));
Это мой фиктивный файл, __mock__/api.js
:
export var Auth = (function () {
var Login = async function(username, password) {
return Promise.resolve(true);
};
return {
Login: Login
}
});
Я получаю от theUsername
и от thePassword
до document.getElementId()
в LoginRequestHandler
и создаю свой собственный DOM для теста выше.
Добавление console.log(username)
в LoginRequestHandler
показывает, что он вызывается и может получить правильные значения. Кроме того, добавление console.log(username)
в API.Auth().Login
также показывает, что он также получает правильные значения. Однако, когда я смотрю свои журналы тестов, я вижу: Number of calls: 0
для имитационной функции и результатов теста с ошибками.
Я предполагаю, что я пытаюсь шпионить за неправильной функцией, и есть ли там в любом случае что я могу это исправить?