2017-09-14 1 views
0

Lors de l'exécution serverless invoke test et en utilisant Vandium, je reçois Status Code 500 et erreur:Serverless test Invoke retourne l'état 500 lorsque vous utilisez Vandium: type d'événement attendu de apigateway mais identifié comme inconnu

{"type":"Error","message":"Expected event type of apigateway but identified as unknown”} 

Voici le code à reproduire le problème. Tout d'abord, l'exemple de travail (sans Vandium):

temps/handler.js:

'use strict'; 

module.exports.endpoint = 

(event, context, callback) => { 
    const response = { 
     statusCode: 200, 
     body: JSON.stringify({ 
      message: `Hello, the current time is ${new Date().toTimeString()}.`, 
     }), 
    }; 

    callback(null, response); 
} 

serverless.yml:

service: serverless-starter 

provider: 
    name: aws 
    runtime: nodejs6.10 
functions: 
    currentTime: 
    handler: time/handler.endpoint 
    events: 
     - http: 
      path: ping 
      method: get 
plugins: 
    - serverless-offline 
    - serverless-mocha-plugin 

Enfin, le code de test autogenerated qui vérifie le code d'état : test/currentTime.js:

'use strict'; 

// tests for currentTime 
// Generated by serverless-mocha-plugin 

const mochaPlugin = require('serverless-mocha-plugin'); 
const expect = mochaPlugin.chai.expect; 
let wrapped = mochaPlugin.getWrapper('currentTime', '/time/handler.js', 'endpoint'); 

describe('currentTime',() => { 
    before((done) => { 
    done(); 
    }); 

    it('implement tests here',() => { 
    return wrapped.run({}).then((response) => { 
     const body = JSON.parse(response.body); 
     expect(response.statusCode).to.be.equal(200); 
    }); 
    }); 
}); 

Cela fonctionne très bien. Je peux démarrer le serveur: serverless offline start et je peux obtenir le point de terminaison http://localhost:3000/ping avec curl ou POSTMAN.

Si je cours serverless invoke test alors le test fonctionne bien. Aucun problème jusqu'à ce point.

Maintenant, quand je Refactor le code et utiliser Vandium: temps/handler.js:

'use strict'; 

const vandium = require('vandium'); 

module.exports.endpoint = vandium.api() 
     .GET((event) => { 
      return { 
       "id": "12345", 
       "name": "john.doe" 
      }; 
     } 
    ) 

Ensuite, tout fonctionne très bien, ce que je peux démarrer le serveur et se connecter au point final avec boucle ou POSTMAN .

Pourtant, quand je lance à nouveau le test serverless invoke test alors au lieu du code d'état 200, je reçois 500 et erreur:

{"type":"Error","message":"Expected event type of apigateway but identified as unknown”}

Quel est le problème?

Répondre