diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,6 +1,10 @@
 # ChangeLog for yesod-test
 
 
+## 1.6.16
+
+* Add `addBareGetParam` to yesod-test. [#1821](https://github.com/yesodweb/yesod/pull/1821)
+
 ## 1.6.15
 
 * Add `bySelectorLabelContain`. [#1781](https://github.com/yesodweb/yesod/pull/1781)
diff --git a/Yesod/Test.hs b/Yesod/Test.hs
--- a/Yesod/Test.hs
+++ b/Yesod/Test.hs
@@ -152,6 +152,7 @@
     , setMethod
     , addPostParam
     , addGetParam
+    , addBareGetParam
     , addFile
     , setRequestBody
     , RequestBuilder
@@ -848,6 +849,23 @@
     { rbdGets = (TE.encodeUtf8 name, Just $ TE.encodeUtf8 value)
               : rbdGets rbd
     }
+
+-- | Add a bare parameter with the given name and no value to the query
+-- string. The parameter is added without an @=@ sign.
+--
+-- You can specify the entire query string literally by adding a single bare
+-- parameter and no other parameters.
+--
+-- @since 1.6.16
+-- 
+-- ==== __Examples__
+--
+-- > {-# LANGUAGE OverloadedStrings #-}
+-- > request $ do
+-- >   addBareGetParam "key" -- Adds ?key to the URL
+addBareGetParam :: T.Text -> RequestBuilder site ()
+addBareGetParam name = modifySIO $ \rbd ->
+    rbd {rbdGets = (TE.encodeUtf8 name, Nothing) : rbdGets rbd}
 
 -- | Add a file to be posted with the current request.
 --
diff --git a/test/main.hs b/test/main.hs
--- a/test/main.hs
+++ b/test/main.hs
@@ -29,10 +29,12 @@
 import Yesod.Test.TransversingCSS
 import Text.XML
 import Data.Text (Text, pack)
+import Data.Char (toUpper)
 import Data.Monoid ((<>))
 import Control.Applicative
-import Network.Wai (pathInfo, requestHeaders)
+import Network.Wai (pathInfo, rawQueryString, requestHeaders)
 import Network.Wai.Test (SResponse(simpleBody))
+import Numeric (showHex)
 import Data.Maybe (fromMaybe)
 import Data.Either (isLeft, isRight)
 
@@ -46,6 +48,7 @@
 import qualified Web.Cookie as Cookie
 import Data.Maybe (isNothing)
 import qualified Data.Text as T
+import qualified Data.ByteString.Char8 as B8
 import Yesod.Test.Internal (contentTypeHeaderIsUtf8)
 
 parseQuery_ :: Text -> [[SelectorGroup]]
@@ -172,6 +175,27 @@
                 statusIs 200
                 -- They pass through the server correctly.
                 bodyEquals "foo+bar%41<&baz"
+            yit "get params" $ do
+                get ("/query" :: Text)
+                statusIs 200
+                bodyEquals ""
+
+                request $ do
+                    setMethod "GET"
+                    setUrl $ LiteAppRoute ["query"]
+                    -- If value uses special characters,
+                    addGetParam "foo" "foo+bar%41<&baz"
+                    addBareGetParam "goo+car%41<&caz"
+                statusIs 200
+                -- They pass through the server correctly.
+                let pctEnc c = "%" <> (map toUpper $ showHex (fromEnum c) "")
+                    plus = pctEnc '+'
+                    pct  = pctEnc '%'
+                    lt   = pctEnc '<'
+                    amp  = pctEnc '&'
+                bodyEquals $ mconcat
+                  [ "goo", plus, "car", pct, "41", lt, amp, "caz",
+                    "&foo=foo", plus, "bar", pct, "41", lt, amp, "baz"]
             yit "labels" $ do
                 get ("/form" :: Text)
                 statusIs 200
@@ -545,6 +569,8 @@
         case mfoo of
             Nothing -> error "No foo"
             Just foo -> return foo
+    onStatic "query" . dispatchTo $
+        T.pack . B8.unpack . rawQueryString <$> waiRequest
     onStatic "redirect301" $ dispatchTo $ redirectWith status301 ("/redirectTarget" :: Text) >> return ()
     onStatic "redirect303" $ dispatchTo $ redirectWith status303 ("/redirectTarget" :: Text) >> return ()
     onStatic "redirectTarget" $ dispatchTo $ return ("we have been successfully redirected" :: Text)
diff --git a/yesod-test.cabal b/yesod-test.cabal
--- a/yesod-test.cabal
+++ b/yesod-test.cabal
@@ -1,5 +1,5 @@
 name:               yesod-test
-version:            1.6.15
+version:            1.6.16
 license:            MIT
 license-file:       LICENSE
 author:             Nubis <nubis@woobiz.com.ar>
