diff --git a/substrate/frame/support/src/traits/misc.rs b/substrate/frame/support/src/traits/misc.rs
index 75f2f8ac3fef156c83288a51352028250e141973..82c5512ac15c525ef6935a129e4b08561a60db9f 100644
--- a/substrate/frame/support/src/traits/misc.rs
+++ b/substrate/frame/support/src/traits/misc.rs
@@ -424,3 +424,19 @@ impl<T> From<T> for WrapperOpaque<T> {
 		Self(t)
 	}
 }
+
+#[cfg(test)]
+mod test {
+	use super::*;
+
+	#[test]
+	fn test_opaque_wrapper() {
+		let encoded = WrapperOpaque(3u32).encode();
+		assert_eq!(encoded, [codec::Compact(4u32).encode(), 3u32.to_le_bytes().to_vec()].concat());
+		let vec_u8 = <Vec<u8>>::decode(&mut &encoded[..]).unwrap();
+		let decoded_from_vec_u8 = u32::decode(&mut &vec_u8[..]).unwrap();
+		assert_eq!(decoded_from_vec_u8, 3u32);
+		let decoded = <WrapperOpaque<u32>>::decode(&mut &encoded[..]).unwrap();
+		assert_eq!(decoded.0, 3u32);
+	}
+}