diff --git a/pandas/core/internals.py b/pandas/core/internals.py
index b0a6086c450ef..e8fab3748bacf 100644
--- a/pandas/core/internals.py
+++ b/pandas/core/internals.py
@@ -655,7 +655,7 @@ def _astype(self, dtype, copy=False, errors='raise', values=None,
 
                     # astype formatting
                     else:
-                        values = self.values
+                        values = self.get_values()
 
                 else:
                     values = self.get_values(dtype=dtype)
diff --git a/pandas/tests/extension/base/casting.py b/pandas/tests/extension/base/casting.py
index 74fe8f196a089..7146443bf8de5 100644
--- a/pandas/tests/extension/base/casting.py
+++ b/pandas/tests/extension/base/casting.py
@@ -16,3 +16,8 @@ def test_tolist(self, data):
         result = pd.Series(data).tolist()
         expected = list(data)
         assert result == expected
+
+    def test_astype_str(self, data):
+        result = pd.Series(data[:5]).astype(str)
+        expected = pd.Series(data[:5].astype(str))
+        self.assert_series_equal(result, expected)
diff --git a/pandas/tests/extension/json/test_json.py b/pandas/tests/extension/json/test_json.py
index 5e9639c487c37..87668cc1196b6 100644
--- a/pandas/tests/extension/json/test_json.py
+++ b/pandas/tests/extension/json/test_json.py
@@ -127,7 +127,12 @@ def test_sort_values_missing(self, data_missing_for_sorting, ascending):
 
 
 class TestCasting(base.BaseCastingTests):
-    pass
+    @pytest.mark.xfail
+    def test_astype_str(self):
+        """This currently fails in NumPy on np.array(self, dtype=str) with
+
+        *** ValueError: setting an array element with a sequence
+        """
 
 
 class TestGroupby(base.BaseGroupbyTests):