diff --git a/tests/daemon/table/pit-entry.t.cpp b/tests/daemon/table/pit-entry.t.cpp
index 52b6f8b..7768faa 100644
--- a/tests/daemon/table/pit-entry.t.cpp
+++ b/tests/daemon/table/pit-entry.t.cpp
@@ -98,7 +98,7 @@
   BOOST_CHECK_LE(in1->getLastRenewed(), after1);
   BOOST_CHECK_LE(in1->getExpiry() - in1->getLastRenewed() - interest1->getInterestLifetime(),
                  after1 - before1);
-  BOOST_CHECK(in1 == entry.getInRecord(*face1));
+  BOOST_CHECK(in1 == entry.findInRecord(*face1));
 
   // insert out-record
   auto before2 = time::steady_clock::now();
@@ -113,7 +113,7 @@
   BOOST_CHECK_LE(out1->getLastRenewed(), after2);
   BOOST_CHECK_LE(out1->getExpiry() - out1->getLastRenewed() - interest1->getInterestLifetime(),
                  after2 - before2);
-  BOOST_CHECK(out1 == entry.getOutRecord(*face1));
+  BOOST_CHECK(out1 == entry.findOutRecord(*face1));
 
   // update in-record
   auto before3 = time::steady_clock::now();
@@ -134,20 +134,20 @@
   BOOST_CHECK_EQUAL(&in3->getFace(), face2.get());
 
   // get in-record
-  InRecordCollection::iterator in4 = entry.getInRecord(*face1);
+  InRecordCollection::iterator in4 = entry.findInRecord(*face1);
   BOOST_REQUIRE(in4 != entry.in_end());
   BOOST_CHECK_EQUAL(&in4->getFace(), face1.get());
 
   // delete in-record
   entry.deleteInRecord(in4);
   BOOST_CHECK_EQUAL(entry.getInRecords().size(), 1);
-  BOOST_CHECK(entry.getInRecord(*face1) == entry.in_end());
+  BOOST_CHECK(entry.findInRecord(*face1) == entry.in_end());
 
   // clear in-records
   entry.clearInRecords();
   BOOST_CHECK_EQUAL(entry.getInRecords().size(), 0);
-  BOOST_CHECK(entry.getInRecord(*face1) == entry.in_end());
-  BOOST_CHECK(entry.getInRecord(*face2) == entry.in_end());
+  BOOST_CHECK(entry.findInRecord(*face1) == entry.in_end());
+  BOOST_CHECK(entry.findInRecord(*face2) == entry.in_end());
 
   // insert another out-record
   OutRecordCollection::iterator out2 = entry.insertOrUpdateOutRecord(*face2, *interest4);
@@ -156,7 +156,7 @@
   BOOST_CHECK_EQUAL(&out2->getFace(), face2.get());
 
   // get out-record
-  OutRecordCollection::iterator out3 = entry.getOutRecord(*face1);
+  OutRecordCollection::iterator out3 = entry.findOutRecord(*face1);
   BOOST_REQUIRE(out3 != entry.out_end());
   BOOST_CHECK_EQUAL(&out3->getFace(), face1.get());
 
@@ -165,7 +165,7 @@
   const OutRecordCollection& outRecords4 = entry.getOutRecords();
   BOOST_REQUIRE_EQUAL(outRecords4.size(), 1);
   BOOST_CHECK_EQUAL(&outRecords4.begin()->getFace(), face1.get());
-  BOOST_CHECK(entry.getOutRecord(*face2) == entry.out_end());
+  BOOST_CHECK(entry.findOutRecord(*face2) == entry.out_end());
 }
 
 const time::milliseconds lifetimes[] = {
