diff --git a/test/message/append.cpp b/test/message/append.cpp
index 59e83b4..b0ef54e 100644
--- a/test/message/append.cpp
+++ b/test/message/append.cpp
@@ -27,6 +27,12 @@
 using testing::SafeMatcherCast;
 using testing::StrEq;
 
+MATCHER_P(iovec_equal, match_string, "")
+{
+    const char* start = std::bit_cast<char*>(arg->iov_base);
+    return std::string(start, arg->iov_len) == match_string;
+}
+
 class AppendTest : public testing::Test
 {
   protected:
@@ -64,6 +70,13 @@
                                   SafeMatcherCast<const char*>(StrEq(str)))))
             .WillOnce(Return(0));
     }
+    void expect_basic_string_iovec(const char* str, size_t size)
+    {
+        std::string tmp = {str, size};
+        EXPECT_CALL(mock, sd_bus_message_append_string_iovec(
+                              nullptr, iovec_equal(tmp), 1))
+            .WillOnce(Return(0));
+    }
 
     void expect_open_container(char type, const char* contents)
     {
@@ -187,6 +200,20 @@
     new_message().append(std::move(s));
 }
 
+TEST_F(AppendTest, LValueStringView)
+{
+    std::string_view s{"asdf"};
+    expect_basic_string_iovec(s.data(), s.size());
+    new_message().append(s);
+}
+
+TEST_F(AppendTest, RValueStringView)
+{
+    std::string_view s{"asdf"};
+    expect_basic_string_iovec(s.data(), s.size());
+    new_message().append(std::string_view{"asdf"});
+}
+
 TEST_F(AppendTest, ObjectPath)
 {
     sdbusplus::message::object_path o{"/asdf"};
