Я учусь тестировать веб-приложение внешнего интерфейса без какого-либо подключения к API.Моя проблема: я должен проверить HTTP-запрос POST, но всегда получаю сообщение об ошибке: TypeError: loginUser (...). Тогда это не функция.
Я знаю, что мои ожидания не верны.Я должен изменить данные для токена JWT, а также пока не знаю, как это сделать.
Это простая аутентификация пользователя.Http пост, отправка электронной почты и пароль, возвращая JWT (JSON веб-токен).Я должен написать тест, чтобы убедиться, что я отправил правильную информацию и получил JWT в качестве ответа.
Спасибо за вашу помощь
Вот мой код:
//login.test.js
const expect = require('chai').expect;
const loginUser = require('../src/actions/authActions').loginUser;
const res = require('./response/loginResponse');
const nock = require('nock');
const userData = {
email: 'test@test.com',
password: '123456'
};
describe('Post loginUser', () => {
beforeEach(() => {
nock('http://localhost:3000')
.post('/api/users/login', userData )
.reply(200, res);
});
it('Post email/pwd to get a token', () => {
return loginUser(userData)
.then(res => {
//expect an object back
expect(typeof res).to.equal('object');
//Test result of name, company and location for the response
expect(res.email).to.equal('test@test.com')
expect(res.name).to.equal('Tralala!!!')
});
});
});
//authActions.js
import axios from "axios";
import setAuthToken from "../utils/setAuthToken";
import jwt_decode from "jwt-decode";
import {
GET_ERRORS,
SET_CURRENT_USER,
USER_LOADING
} from "./types";
// Login - get user token
export const loginUser = userData => dispatch => {
axios
.post("/api/users/login", userData)
.then(res => {
// Save to localStorage
// Set token to localStorage
const { token } = res.data;
localStorage.setItem("jwtToken", token);
// Set token to Auth header
setAuthToken(token);
// Decode token to get user data
const decoded = jwt_decode(token);
// Set current user
dispatch(setCurrentUser(decoded));
})
.catch(err =>
dispatch({
type: GET_ERRORS,
payload: err.response.data
})
);
// loginResponse.js
module.exports = { email: 'test@test.com',
password: '123456',
name: "Tralala!!!"
};
Фактический результат: 1) Опубликовать loginUser Опубликовать email / pwd для получения токена: TypeError: loginUser (...). Тогда это не функция в Context.then (test / login.test.js: 37: 12)