David J.
David J.

Reputation: 1913

How to test the return value of a promise in a Cucumber test?

I'm trying to test the return value of a get request to a couchdb node.

I have a feature defined with the following Given clause:

Given A get request is made to the DB

which is implemented with the following step function:

var Profile = require('../UserProfile.js')
Given('A get request is made to the DB', function () {

    var text = Profile.getDB('localhost:5984').then(data => {
        console.log(data)
    })

}); 

The above step references this model:

var axios = require('axios')

module.exports = {

    getDB: function(url){               
        return axios.get(url).then(response => {
            return response.data
        })

    }
};

I can't seem to log the result of the GET request when I perform it in the model and reference it in the step definition. When I do the GET request in the step definition, it works - but this isn't useful to me, I want to test the model. How do I get the resulting value?

Upvotes: 1

Views: 1097

Answers (1)

Coding Edgar
Coding Edgar

Reputation: 1455

Cucumber 2.0 supports Promises as returns, try with:

const Profile = require('../UserProfile')
const { defineSupportCode } = require('cucumber')

defineSupportCode(({ defineStep }) => {
   defineStep('A get request is made to the DB', function () {
      return Profile.getDB('http://localhost:5984').then(data => {
        console.log(data)
      })
   })
})

Upvotes: 3

Related Questions