diff --git a/tests/tools/nfdc/fib-module.t.cpp b/tests/tools/nfdc/fib-module.t.cpp
index 812c32c..0897c01 100644
--- a/tests/tools/nfdc/fib-module.t.cpp
+++ b/tests/tools/nfdc/fib-module.t.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-/**
- * Copyright (c) 2014-2017,  Regents of the University of California,
+/*
+ * Copyright (c) 2014-2019,  Regents of the University of California,
  *                           Arizona Board of Regents,
  *                           Colorado State University,
  *                           University Pierre & Marie Curie, Sorbonne University,
@@ -42,16 +42,24 @@
       <nextHops>
         <nextHop>
           <faceId>262</faceId>
+          <endpointId>1</endpointId>
           <cost>9</cost>
         </nextHop>
         <nextHop>
           <faceId>272</faceId>
+          <endpointId>2</endpointId>
           <cost>50</cost>
         </nextHop>
         <nextHop>
           <faceId>274</faceId>
+          <endpointId>3</endpointId>
           <cost>78</cost>
         </nextHop>
+        <nextHop>
+          <faceId>275</faceId>
+          <endpointId>0</endpointId>
+          <cost>80</cost>
+        </nextHop>
       </nextHops>
     </fibEntry>
     <fibEntry>
@@ -59,10 +67,12 @@
       <nextHops>
         <nextHop>
           <faceId>1</faceId>
+          <endpointId>0</endpointId>
           <cost>0</cost>
         </nextHop>
         <nextHop>
           <faceId>274</faceId>
+          <endpointId>5</endpointId>
           <cost>0</cost>
         </nextHop>
       </nextHops>
@@ -72,8 +82,8 @@
 
 const std::string STATUS_TEXT = std::string(R"TEXT(
 FIB:
-  / nexthops={faceid=262 (cost=9), faceid=272 (cost=50), faceid=274 (cost=78)}
-  /localhost/nfd nexthops={faceid=1 (cost=0), faceid=274 (cost=0)}
+  / nexthops={face=262:1 (cost=9), face=272:2 (cost=50), face=274:3 (cost=78), face=275 (cost=80)}
+  /localhost/nfd nexthops={face=1 (cost=0), face=274:5 (cost=0)}
 )TEXT").substr(1);
 
 BOOST_AUTO_TEST_CASE(Status)
@@ -81,16 +91,16 @@
   this->fetchStatus();
   FibEntry payload1;
   payload1.setPrefix("/")
-          .addNextHopRecord(NextHopRecord().setFaceId(262).setCost(9))
-          .addNextHopRecord(NextHopRecord().setFaceId(272).setCost(50))
-          .addNextHopRecord(NextHopRecord().setFaceId(274).setCost(78));
+          .addNextHopRecord(NextHopRecord().setFaceId(262).setEndpointId(1).setCost(9))
+          .addNextHopRecord(NextHopRecord().setFaceId(272).setEndpointId(2).setCost(50))
+          .addNextHopRecord(NextHopRecord().setFaceId(274).setEndpointId(3).setCost(78))
+          .addNextHopRecord(NextHopRecord().setFaceId(275).setCost(80));
   FibEntry payload2;
   payload2.setPrefix("/localhost/nfd")
           .addNextHopRecord(NextHopRecord().setFaceId(1).setCost(0))
-          .addNextHopRecord(NextHopRecord().setFaceId(274).setCost(0));
+          .addNextHopRecord(NextHopRecord().setFaceId(274).setEndpointId(5).setCost(0));
   this->sendDataset("/localhost/nfd/fib/list", payload1, payload2);
   this->prepareStatusOutput();
-
   BOOST_CHECK(statusXml.is_equal(STATUS_XML));
   BOOST_CHECK(statusText.is_equal(STATUS_TEXT));
 }
