diff --git a/quic/core/qpack/qpack_receive_stream_test.cc b/quic/core/qpack/qpack_receive_stream_test.cc
index 8bcfb27..df081d1 100644
--- a/quic/core/qpack/qpack_receive_stream_test.cc
+++ b/quic/core/qpack/qpack_receive_stream_test.cc
@@ -55,17 +55,16 @@
             SupportedVersions(GetParam().version))),
         session_(connection_) {
     session_.Initialize();
-    // TODO(b/112770235): Remove explicit QPACK stream construction in test once
-    // QPACK streams are created in QuicSpdySession initialization.
-    PendingStream* pending =
-        new PendingStream(QuicUtils::GetFirstUnidirectionalStreamId(
-                              GetParam().version.transport_version,
-                              QuicUtils::InvertPerspective(perspective())),
-                          &session_);
-    auto qpack_receive = QuicMakeUnique<QpackReceiveStream>(pending, nullptr);
-    qpack_receive_stream_ = qpack_receive.get();
-    session_.RegisterStaticStream(std::move(qpack_receive), false);
-    delete pending;
+    QuicStreamId id = perspective() == Perspective::IS_SERVER
+                          ? GetNthClientInitiatedUnidirectionalStreamId(
+                                session_.transport_version(), 3)
+                          : GetNthServerInitiatedUnidirectionalStreamId(
+                                session_.transport_version(), 3);
+    char type[] = {0x03};
+    QuicStreamFrame data1(id, false, 0, QuicStringPiece(type, 1));
+    session_.OnStreamFrame(data1);
+    qpack_receive_stream_ =
+        QuicSpdySessionPeer::GetQpackDecoderReceiveStream(&session_);
   }
 
   Perspective perspective() const { return GetParam().perspective; }
diff --git a/quic/core/qpack/qpack_send_stream_test.cc b/quic/core/qpack/qpack_send_stream_test.cc
index c297b56..8431afc 100644
--- a/quic/core/qpack/qpack_send_stream_test.cc
+++ b/quic/core/qpack/qpack_send_stream_test.cc
@@ -57,13 +57,8 @@
         session_(connection_) {
     session_.Initialize();
 
-    // TODO(b/112770235): Remove explicit QPACK stream construction in test once
-    // QPACK streams are created in QuicSpdySession initialization.
-    auto qpack_send = QuicMakeUnique<QpackSendStream>(
-        QuicSpdySessionPeer::GetNextOutgoingUnidirectionalStreamId(&session_),
-        &session_, kQpackEncoderStream);
-    qpack_send_stream_ = qpack_send.get();
-    session_.RegisterStaticStream(std::move(qpack_send), false);
+    qpack_send_stream_ =
+        QuicSpdySessionPeer::GetQpackDecoderSendStream(&session_);
 
     ON_CALL(session_, WritevData(_, _, _, _, _))
         .WillByDefault(Invoke(MockQuicSession::ConsumeData));
