2016-09-26 6 views
0

Express 및 Use와 My Server (app.js)의 끝점을 호출하여 결과를 테스트하려고합니다.TypeError : 정의되지 않은 'post'속성을 읽을 수 없습니다.

내 서버 파일 (app.js) :

app.post('/customer', authorize({allowedPowerLevel: 50}), function(request, response, callback) { 
    const customerType = parseInt(request.body.customerType); 
    const data = JSON.parse(request.body.data); 
    }); 
}); 

CRUD 작업하는 index.js 파일 (포스트() 정의) :

let server     = supertest.agent("http://localhost:5003"); 
let loggedInUserManager = require("./../loggedInUser")(); 
let idProvider    = require("./../id-provider")(); 
let jsonProvider   = require("./../json-provider")(); 

module.exports = function() { 

    const crudOperations = { 

    post: function(idCustomerType, callback) { 
    server 
    .post("/customer") 
    .set("x-access-token", loggedInUserManager.authentication.token) 
    .send({ 
    customerType: idCustomerType, 
    data: JSON.stringify(jsonProvider.getTemplate("individual")) 
    }) 
    .end(function(error, response) { 
    callback(response); 
    }); 
} 
    } 
} 

crudOperations 포스트()

let should     = require("should"); 
let crudCustomer   = require("./crud-customer")(); 

let startTests = function(idCustomerType) { 

describe(`Post customer`, function() { 
let returnedCustomerId; 

it(`should post a new customer`, function(done) { 
    crudCustomer.post(idCustomerType, function(response) { 
    should(response.status).be.eql(200); 
    should(response.body).have.property("customerId").not.be.eql(""); 
    returnedCustomerId = response.body.idCustomer; 
    done(); 
    }); 
}); 
}); 
전화

테스트를 실행하려고하면 다음 오류가 표시됩니다.

Post customer should post a new customer: 
    TypeError: Cannot read property 'post' of undefined 
     at Context.<anonymous> (C:\Users\Alex\Desktop\projects\watson\server\tests\customer.js:15:19) 
    at callFnAsync 

나는 무엇인가 놓친다?

+0

crud-customer 어떤 수출 있나요? –

+0

번. crudCustomer를 돌려 주어야합니까? –

답변

1

crudOperations 객체를 반환해야합니다. 뭐 그런 작업을해야합니다 :

let server = supertest.agent("http://localhost:5003"); 
let loggedInUserManager = require("./../loggedInUser")(); 
let idProvider = require("./../id-provider")(); 
let jsonProvider = require("./../json-provider")(); 

module.exports = function() { 
    const crudOperations = { 
    post: function (idCustomerType, callback) { 
     server 
     .post("/customer") 
     .set("x-access-token", loggedInUserManager.authentication.token) 
     .send({ 
      customerType: idCustomerType, 
      data: JSON.stringify(jsonProvider.getTemplate("individual")) 
     }) 
     .end(function (error, response) { 
      callback(response); 
     }); 
    } 
    } 

    return crudOperations; 
} 

그렇지 않으면 단지 crudOperations는 module.exports에 그 같은 객체를 할당 :

const crudOperations = { 
    post: function (idCustomerType, callback) { 
     server 
     .post("/customer") 
     .set("x-access-token", loggedInUserManager.authentication.token) 
     .send({ 
      customerType: idCustomerType, 
      data: JSON.stringify(jsonProvider.getTemplate("individual")) 
     }) 
     .end(function (error, response) { 
      callback(response); 
     }); 
    } 
    } 

module.exports = crudOperations; 

을하지만 그 다음이 방법을 따른다면 당신은에서 파일을 요구해야 그런 테스트 :

let crudCustomer = require("./crud-customer");