08 Java Script Functions - biswajitsundara/Karate GitHub Wiki

Sometimes we would need to manipulate data before or after karate scenario steps and java script functions help us in doing so. This helps us to perform different types of validations.

Single Line Function

  Scenario: Get call test with Single line function
    Given path '/api/users/2'
    When method GET
    Then status=200
    * def myFun = function(){return "Hello"}
    * def returnedData = call myFun
    Then print 'returned data ==>'+returnedData

Block Function

Scenario: Get call test with Block function
    Given path '/api/users/2'
    When method GET
    Then status=200
    * def myFun2 =
      """
      function(){
      return "Hey"
      }
      """
    * def returnedData2 = call myFun2
    Then print 'returned data ==>'+returnedData2

Parameterized Function

Scenario: Number of user validation
    Given path '/api/users?page=2'
    When method GET
    Then status=200
    * def data = response.data
    And print data
    * def valFun = 
    """
    function(arg){
      return arg.length;
    }
    """
    * def numberOfUsers = call valFun data
    Then print numberOfUsers
    And match numberOfUsers == 6

For Loop

Scenario: Print only user ids
    Given path '/api/users?page=2'
    When method GET
    Then status=200
    * def data2 = response.data
    And print data2
    * def valFun2 =
      """
      function(arg){
      arrIds = [];
        for(i=0;i<arg.length;i++){
          arrIds.push(arg[i].id);
        }
        return arrIds;
      }
      """
    * def idOfUsers = call valFun2 data2
    Then print idOfUsers

If condition

Scenario: Print details for user 5
    Given path '/api/users?page=2'
    When method GET
    Then status=200
    * def data1 = response.data
    And print data1
    * def valFun1 =
      """
      function(arg){
        for(i=0;i<arg.length;i++){
        if(arg[i].id==5){
          return arg[i]
         }
        }
      }
      """
    * def user5 = call valFun1 data1
    Then print user5
⚠️ **GitHub.com Fallback** ⚠️