diff --git a/confuse.py b/confuse.py
index <HASH>..<HASH> 100644
--- a/confuse.py
+++ b/confuse.py
@@ -1246,7 +1246,7 @@ class Choice(Template):
             except ValueError:
                 self.fail(
                     u'must be one of {0}, not {1}'.format(
-                        repr(c.value for c in self.choices),
+                        repr([c.value for c in self.choices]),
                         repr(value)
                     ),
                     view
diff --git a/test/test_validation.py b/test/test_validation.py
index <HASH>..<HASH> 100644
--- a/test/test_validation.py
+++ b/test/test_validation.py
@@ -90,6 +90,16 @@ class BuiltInValidatorTest(unittest.TestCase):
         res = config['foo'].as_choice(Foobar)
         self.assertEqual(res, Foobar.Foo)
 
+    @unittest.skipUnless(SUPPORTS_ENUM,
+                         "enum not supported in this version of Python.")
+    def test_as_choice_with_enum_error(self):
+        class Foobar(enum.Enum):
+            Foo = 'bar'
+
+        config = _root({'foo': 'foo'})
+        with self.assertRaises(confuse.ConfigValueError):
+            config['foo'].as_choice(Foobar)
+
     def test_as_number_float(self):
         config = _root({'f': 1.0})
         config['f'].as_number()
fixed bug in exception message and added another test case