2016-09-26 62 views
0

私はexpressとshouldとiを使用して、結果をテストするために私のサーバ(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オブジェクトを返す必要があります。そのような何か作業をする必要があります。それ以外の場合はちょうど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; 
} 

は、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"); 
関連する問題