Я должен написать контрольный пример для этого конкретного компонента, как указано ниже: -
import React from 'react';
import auth from 'containers/Login/authService';
class Footer extends React.Component {
render() {
if(!auth.loggedIn()){
return (
<div className="hidden">Not Logged In</div>
);
}else
return (
<footer>
<span>XYZ</span>
</footer>
);
}
}
export default Footer;
Я провел тестирование для Not Logged In part, но я не могу проверить для XYZ part. Мой файл теста ниже: -
import React from 'react';
import { mount } from 'enzyme';
import Footer from '../Footer';
import { login } from '../../../containers/Login/authService';
describe('Footer mount testing', () => {
const wrapper = mount(<Footer />);
it('For not logged in user', () => {
expect(wrapper.find('.hidden').length).toBeGreaterThan(0);
});
it('For logged in user', () => {
jest.mock('../../../containers/Login/authService', () => ({
login: true,
}));
login.mockImplementation(() => Promise.resolve('true'));
expect(wrapper.text()).toEqual('XYZ');
});
});
Во время работы я всегда получаю сообщение об ошибке TypeError: Cannot read property 'mockImplementation' of undefined
Я не могу войти в этот модуль для проверки.
контейнеры / логин / файл authService, как показано ниже: -
import request from 'utils/request';
import {config} from 'utils/config';
let localStorage;
// If we're testing, use a local storage polyfill
if (global.process && process.env.NODE_ENV === 'test') {
localStorage = require('localStorage');
} else {
// If not, use the browser one
localStorage = global.window.localStorage;
}
let auth = {
/**
* Logs a user in, returning a promise with `true` when done
* @param {string} username The username of the user
* @param {string} password The password of the user
*/
login (username, password) {
if (auth.loggedIn()) return Promise.resolve(true);
var data ={username:username, password:password}
console.log("#" + data + "#");
let requestData = {
method: 'POST',
headers: {
'Content-Type': 'application/json',
"Authorization": "Basic d2ViX2FwcDo="
},
body : JSON.stringify(data)
};
return request.post(config.serverHost+'/api/core/login', requestData)
.then(response => {
console.log('response received',response);
// Save token to local storage
// if(response.status == 200)
localStorage.token = JSON.stringify(response);
return Promise.resolve(response)
})
},
logout () {
return new Promise((resolve, reject) => {
localStorage.removeItem('token');
resolve(true)
});
},
/**
* Checks if a user is logged in
*/
loggedIn () {
return !!localStorage.token
},
export default auth