stdin must be specified explicitly with `-`
diff --git a/src/assert.bash b/src/assert.bash
index 1194753..3c11fb7 100644
--- a/src/assert.bash
+++ b/src/assert.bash
@@ -185,12 +185,14 @@
 assert_output() {
   local -i is_mode_partial=0
   local -i is_mode_regexp=0
+  local -i use_stdin=0
 
   # Handle options.
   while (( $# > 0 )); do
     case "$1" in
       -p|--partial) is_mode_partial=1; shift ;;
       -e|--regexp) is_mode_regexp=1; shift ;;
+      -) use_stdin=1; shift ;;
       --) shift; break ;;
       *) break ;;
     esac
@@ -205,7 +207,11 @@
 
   # Arguments.
   local expected
-  (( $# == 0 )) && expected="$(cat -)" || expected="$1"
+  if (( use_stdin )); then
+    expected="$(cat -)"
+  else
+    expected="$1"
+  fi
 
   # Matching.
   if (( is_mode_regexp )); then
@@ -278,12 +284,14 @@
 refute_output() {
   local -i is_mode_partial=0
   local -i is_mode_regexp=0
+  local -i use_stdin=0
 
   # Handle options.
   while (( $# > 0 )); do
     case "$1" in
       -p|--partial) is_mode_partial=1; shift ;;
       -e|--regexp) is_mode_regexp=1; shift ;;
+      -) use_stdin=1; shift ;;
       --) shift; break ;;
       *) break ;;
     esac
@@ -298,7 +306,11 @@
 
   # Arguments.
   local unexpected
-  (( $# == 0 )) && unexpected="$(cat -)" || unexpected="$1"
+  if (( use_stdin )); then
+    unexpected="$(cat -)"
+  else
+    unexpected="$1"
+  fi
 
   if (( is_mode_regexp == 1 )) && [[ '' =~ $unexpected ]] || (( $? == 2 )); then
     echo "Invalid extended regular expression: \`$unexpected'" \
diff --git a/test/50-assert-15-assert_output.bats b/test/50-assert-15-assert_output.bats
index cca79cc..7efee71 100755
--- a/test/50-assert-15-assert_output.bats
+++ b/test/50-assert-15-assert_output.bats
@@ -26,9 +26,9 @@
   [ "${lines[3]}" == '--' ]
 }
 
-@test 'assert_output(): reads <expected> from STDIN' {
+@test 'assert_output() - : reads <expected> from STDIN' {
   run echo 'a'
-  run assert_output <<STDIN
+  run assert_output - <<STDIN
 a
 STDIN
 echo "$output"
diff --git a/test/50-assert-16-refute_output.bats b/test/50-assert-16-refute_output.bats
index 5204301..a289717 100755
--- a/test/50-assert-16-refute_output.bats
+++ b/test/50-assert-16-refute_output.bats
@@ -25,9 +25,9 @@
   [ "${lines[2]}" == '--' ]
 }
 
-@test 'refute_output(): reads <unexpected> from STDIN' {
-  run echo 'a'
-  run refute_output <<INPUT
+@test 'refute_output() - : reads <unexpected> from STDIN' {
+  run echo '-'
+  run refute_output - <<INPUT
 b
 INPUT
   [ "$status" -eq 0 ]