2017-09-28 3 views
0

데이터베이스 쿼리를 테스트하려고 시도했는데 Objection ORM과 knex을 사용하고 있습니다.nodejs 응용 프로그램에서 sqlite3을 사용하여 테스트하지 못했습니다.

프로젝트 응용 프로그램의 구조 :

/project-sqlite 
    /__tests__ 
    routes.test.js 
    /models 
    user.js 
    /node_modules 
    -app.js 
    -package-lock.json 
    -package.json 
    -user.db 

모델 /의 user.js :

const objection = require('objection'); 
const Model = objection.Model; 
const Knex = require('knex'); 

const knex = Knex({ 
    client: 'sqlite3', 
    useNullAsDefault: true, 
    connection: { 
    filename: './user.db' 
    } 
}); 

Model.knex(knex); 

// Create database schema. You should use knex migration files to do this. We 
// create it here for simplicity. 
const schemaPromise = knex.schema.createTableIfNotExists('user', table => { 
    table.increments('id').primary(); 
    table.string('name'); 
}); 

class User extends Model { 
    static get tableName() { 
    return 'user'; 
    } 

    static get jsonSchema() { 
    return { 
     type: 'object', 
     required: ['name'], 

     properties: { 
     id: { type: 'integer' }, 
     name: { type: 'string', minLength: 1, maxLength: 255 } 
     } 
    }; 
    } 
}; 

schemaPromise.then(() => { 
    return User.query().insert({name: 'User 1'}); 
}).then(user => { 
    console.log('created: ', user.name, 'id: ', user.id); 
}); 

module.exports = User; 

app.js :

const express = require('express'); 
const User = require('./models/user'); 

app = express(); 

app.get('/users', (req, res) => { 
    const newUser = { 
    name: 'user 4050' 
    }; 
    User 
    .query() 
    .insert(newUser) 
    .then(user => { 
    res.writeHead(200, {'Content-type': 'text/json'}); 
    res.end(JSON.stringify(user)); 
    }) 

}) 

app.get('/users1', (req, res) => { 
    User 
    .query() 
    .then(user => { 
    res.writeHead(200, {'Content-type': 'text/json'}); 
    res.end(JSON.stringify(user)); 
    }) 

}) 

app.listen(3000,()=> { 
    console.log('server runs on localhost:3000'); 
}); 

테스트 /routes.test. js :

시험그러나 나는 일부 사용자 삽입에 실패하고이 오류가있어 :

Test model User 
✕ should return User 1 (29ms) 

    ● Test model User › should return User 1 

    expect(received).toEqual(expected) 

    Expected value to equal: 
     "User 1" 
    Received: 
     undefined 

    Difference: 

     Comparing two different types of values. Expected string but received undefined. 
npm ERR! code ELIFECYCLE 
npm ERR! errno 1 
npm ERR! [email protected] test: `jest` 
npm ERR! Exit status 1 
npm ERR! 
npm ERR! Failed at the [email protected] test script. 
npm ERR! This is probably not a problem with npm. There is likely additional logging output above. 

내가 문제가 무엇인지 이해하지 못하고 있습니다. 데이터가 저장된 파일에 연결되어 있지 않거나 데이터가 저장되지 않은 파일이 있습니까?

답변

0

userFounded 유형은 객체가 아니므로 userFounded.name과 함께 사용하는 사용자 이름을 가져올 수 없습니다.

시도 :

expect(userFounde[0].name).toEqual('User 1')