diff --git a/scripts/lua/policies/backendRouting.lua b/scripts/lua/policies/backendRouting.lua
index 8ef79e5..c1efbad 100644
--- a/scripts/lua/policies/backendRouting.lua
+++ b/scripts/lua/policies/backendRouting.lua
@@ -28,6 +28,10 @@
 
 --- Set upstream based on the backendUrl
 function _M.setRoute(backendUrl, gatewayPath)
+  _M.setRouteWithOverride(backendUrl, gatewayPath, backendOverride)
+end
+
+function _M.setRouteWithOverride(backendUrl, gatewayPath, override)
   local u = url.parse(backendUrl)
   if u.scheme == nil then
     u = url.parse(utils.concatStrings({'http://', backendUrl}))
@@ -42,8 +46,8 @@
   ngx.var.backendUrl = backendUrl
 
   -- if there is a backend override then use that instead of actual backend from swagger
-  if backendOverride ~= nil then
-    local bou = url.parse(backendOverride)
+  if override ~= nil then
+    local bou = url.parse(override)
     u.scheme = bou.scheme
     u:setAuthority(bou.authority)
 
diff --git a/tests/scripts/lua/policies/backendRouting.lua b/tests/scripts/lua/policies/backendRouting.lua
new file mode 100644
index 0000000..06b812f
--- /dev/null
+++ b/tests/scripts/lua/policies/backendRouting.lua
@@ -0,0 +1,44 @@
+--
+-- Licensed to the Apache Software Foundation (ASF) under one or more
+-- contributor license agreements.  See the NOTICE file distributed with
+-- this work for additional information regarding copyright ownership.
+-- The ASF licenses this file to You under the Apache License, Version 2.0
+-- (the "License"); you may not use this file except in compliance with
+-- the License.  You may obtain a copy of the License at
+--
+--     http://www.apache.org/licenses/LICENSE-2.0
+--
+-- Unless required by applicable law or agreed to in writing, software
+-- distributed under the License is distributed on an "AS IS" BASIS,
+-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+-- See the License for the specific language governing permissions and
+-- limitations under the License.
+--
+
+local backendRouting = require 'policies/backendRouting'
+local fakengx = require 'fakengx'
+
+describe('Testing backend routing module', function()
+  before_each(function()
+    _G.ngx = fakengx.new()
+    ngx.var.backendUrl = ''
+    ngx.var.upstream = ''
+    ngx.req.set_uri = function(uri)
+    end
+  end)
+
+  it('should work without override', function()
+    ngx.var.request_uri = "/api/23bc46b1-71f6-4ed5-8c54-816aa4f8c502/hello/world"
+    backendRouting.setRoute("https://localhost:3233/api/v1/web/guest/default/hello2.json", "hello/world")
+    assert.are.same(ngx.var.upstream, 'https://localhost:3233')
+    assert.are.same(ngx.var.backendUrl, 'https://localhost:3233/api/v1/web/guest/default/hello2.json')
+  end)
+
+  it('should work with override', function()
+      ngx.var.request_uri = "/api/23bc46b1-71f6-4ed5-8c54-816aa4f8c502/hello/world"
+      backendRouting.setRouteWithOverride("https://localhost:3233/api/v1/web/guest/default/hello2.json", "hello/world",
+         "http://172.0.0.1:3456")
+      assert.are.same(ngx.var.upstream, 'http://172.0.0.1:3456')
+      assert.are.same(ngx.var.backendUrl, 'http://172.0.0.1:3456/api/v1/web/guest/default/hello2.json')
+    end)
+end)
