diff --git a/test/mock_ethernet_interface.hpp b/test/mock_ethernet_interface.hpp
index b8c3335..a0358ed 100644
--- a/test/mock_ethernet_interface.hpp
+++ b/test/mock_ethernet_interface.hpp
@@ -13,9 +13,9 @@
 {
   public:
     MockEthernetInterface(sdbusplus::bus_t& bus, const std::string& objPath,
-                          DHCPConf dhcpEnabled, Manager& parent,
-                          bool emitSignal) :
-        EthernetInterface(bus, objPath, dhcpEnabled, parent, emitSignal,
+                          const config::Parser& config, DHCPConf dhcpEnabled,
+                          Manager& parent, bool emitSignal) :
+        EthernetInterface(bus, objPath, config, dhcpEnabled, parent, emitSignal,
                           /*nicEnabled=*/true)
     {
     }
diff --git a/test/mock_network_manager.hpp b/test/mock_network_manager.hpp
index 741cee9..46c7c4b 100644
--- a/test/mock_network_manager.hpp
+++ b/test/mock_network_manager.hpp
@@ -1,7 +1,4 @@
 #pragma once
-
-#include "config.h"
-
 #include "mock_ethernet_interface.hpp"
 #include "network_manager.hpp"
 
@@ -34,13 +31,14 @@
             fs::path objPath = objectPath;
             // normal ethernet interface
             objPath /= interface;
-            auto dhcp = getDHCPValue(confDir, interface);
+            config::Parser config(config::pathForIntfConf(confDir, interface));
             auto intf =
                 std::make_shared<phosphor::network::MockEthernetInterface>(
-                    bus, objPath.string(), dhcp, *this, true);
+                    bus, objPath.string(), config, getDHCPValue(config), *this,
+                    true);
             intf->createIPAddressObjects();
             intf->createStaticNeighborObjects();
-            intf->loadNameServers();
+            intf->loadNameServers(config);
             this->interfaces.emplace(
                 std::make_pair(std::move(interface), std::move(intf)));
         }
diff --git a/test/test_config_parser.cpp b/test/test_config_parser.cpp
index cd2fa4f..896d61e 100644
--- a/test/test_config_parser.cpp
+++ b/test/test_config_parser.cpp
@@ -69,18 +69,21 @@
 
 TEST_F(TestConfigParser, EmptyObject)
 {
+    EXPECT_TRUE(parser.getFilename().empty());
     EXPECT_EQ(0, parser.getWarnings().size());
 }
 
 TEST_F(TestConfigParser, ReadDirectory)
 {
     parser.setFile("/");
+    EXPECT_EQ("/", parser.getFilename());
     EXPECT_EQ(1, parser.getWarnings().size());
 }
 
 TEST_F(TestConfigParser, ReadConfigDataMissingFile)
 {
     parser.setFile("/no-such-path");
+    EXPECT_EQ("/no-such-path", parser.getFilename());
     EXPECT_EQ(1, parser.getWarnings().size());
 }
 
@@ -88,6 +91,7 @@
 {
     WriteSampleFile();
     parser.setFile(filename);
+    EXPECT_EQ(filename, parser.getFilename());
     EXPECT_EQ(4, parser.getWarnings().size());
 
     EXPECT_THAT(parser.getValues("Match", "Name"), ElementsAre("eth0"));
diff --git a/test/test_ethernet_interface.cpp b/test/test_ethernet_interface.cpp
index 96f00d1..e9ed3fd 100644
--- a/test/test_ethernet_interface.cpp
+++ b/test/test_ethernet_interface.cpp
@@ -43,8 +43,12 @@
     {
         mock_clear();
         mock_addIF("test0", 1, mac);
-        return {bus, "/xyz/openbmc_test/network/test0",
-                EthernetInterface::DHCPConf::none, manager, true};
+        return {bus,
+                "/xyz/openbmc_test/network/test0",
+                config::Parser(),
+                EthernetInterface::DHCPConf::none,
+                manager,
+                true};
     }
 
     int countIPObjects()
diff --git a/test/test_vlan_interface.cpp b/test/test_vlan_interface.cpp
index 126d2d0..5ee1cf9 100644
--- a/test/test_vlan_interface.cpp
+++ b/test/test_vlan_interface.cpp
@@ -43,6 +43,7 @@
         mock_addIF("test0", 1);
         return {bus,
                 "/xyz/openbmc_test/network/test0",
+                config::Parser(),
                 EthernetInterface::DHCPConf::none,
                 manager,
                 false,
