Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Passando os erros para o Express e criando o banco de testes

Podem me ajudar ?? Criei a base de dados e o "mocha" continua apresentando erro.

mysql> select * from casadocodigo_nodejs_test.produtos; Empty set (0.00 sec)

Atualizei a variavel de ambiente: NODE_ENV=test

C:\Caca\Alura\Node\AppNode\casadocodigo>mocha modulo ta sendo carregado atendendo a requisicao atendendo a requisicao

ProdutosController

1) #listagem json √ #cadastro de novo produto com dados invalidos (50ms) { titulo: 'Titulo novo', descricao: 'novo livro', preco: 20.5 } 2) #cadastro de novo produto com dados validos

1 passing (116ms) 2 failing

1) #ProdutosController #listagem json: Error: expected "Content-Type" matching /json/, got "text/html; charset=utf-8" at Test._assertHeader (node_modules\supertest\lib\test.js:243:14) at Test._assertFunction (node_modules\supertest\lib\test.js:281:11) at Test.assert (node_modules\supertest\lib\test.js:171:18) at Server.assert (node_modules\supertest\lib\test.js:131:12) at emitCloseNT (net.js:1537:8)

2) #ProdutosController #cadastro de novo produto com dados validos: Error: expected 302 "Found", got 500 "Internal Server Error" at Test._assertStatus (node_modules\supertest\lib\test.js:266:12) at Test._assertFunction (node_modules\supertest\lib\test.js:281:11) at Test.assert (node_modules\supertest\lib\test.js:171:18) at Server.assert (node_modules\supertest\lib\test.js:131:12)

at emitCloseNT (net.js:1537:8)

insira seu código aqui

//\AppNode\casadocodigo\test\produtos.js

var v_express = require('../config/express')(); var v_request = require('supertest')(v_express);

describe('#ProdutosController',function(){

it('#listagem json',function(done){

//v_request.get('http://localhost:3000/produtos') v_request.get('/produtos') .set('Accept','application/json') .expect('Content-Type',/json/) .expect(200,done); });

it('#cadastro de novo produto com dados invalidos',function(done){ v_request.post('/produtos') .send({titulo:"",descricao:"novo livro"}) .expect(400,done); });

it('#cadastro de novo produto com dados validos',function(done){ v_request.post('/produtos') .send({titulo:"Titulo novo",descricao:"novo livro",preco:20.50}) //deixadno o codigo de retorno 200 apresenta erro, porque //no caso do redirect o retorno é 302 //.expect(200,done); .expect(302,done); }); }); -- // ./app/infra/connectionFactory.js var v_mysql = require('mysql');

//module.exports = function (v_app) { // return v_mysql.createConnection({ // host : 'LocalHost', // user : 'root', // password : 'Mrlf0101', // database : 'casadocodigo_nodejs' // });

function createDBConnection() { //if(process.env.NODE_ENV == 'development') if(!process.env.NODE_ENV){ return v_mysql.createConnection({ host: 'localhost', user: 'root', password : 'Mrlf0101', database: 'casadocodigo_nodejs' }); }

if(process.env.NODE_ENV == 'test') { return mysql.createConnection({ host:'localhost', user:'root', password:'Mrlf0101', database:'casadocodigo_nodejs_test' }); } }

module.exports = function () { return createDBConnection; }; --

1 resposta
solução!

Pelo feedback do erro, o primeiro não está passando porque o content-type não está sendo passado no teste. O segundo está falando porque deu algum erro inesperado no servidor, só que aí precisamos da mensagem do console do node para pode saber. Pode ter a ver com a outra dúvida que você abriu aqui no fórum.