diff --git a/packages/enzyme-adapter-react-16/src/ReactSixteenAdapter.js b/packages/enzyme-adapter-react-16/src/ReactSixteenAdapter.js
index afa65effa..f3ee8ac09 100644
--- a/packages/enzyme-adapter-react-16/src/ReactSixteenAdapter.js
+++ b/packages/enzyme-adapter-react-16/src/ReactSixteenAdapter.js
@@ -803,7 +803,10 @@ class ReactSixteenAdapter extends EnzymeAdapter {
switch ($$typeofType) {
case ContextConsumer || NaN: return 'ContextConsumer';
case ContextProvider || NaN: return 'ContextProvider';
- case Memo || NaN: return displayNameOfNode(type);
+ case Memo || NaN: {
+ const nodeName = displayNameOfNode(node);
+ return typeof nodeName === 'string' ? nodeName : `Memo(${displayNameOfNode(type)})`;
+ }
case ForwardRef || NaN: {
if (type.displayName) {
return type.displayName;
diff --git a/packages/enzyme-test-suite/test/ReactWrapper-spec.jsx b/packages/enzyme-test-suite/test/ReactWrapper-spec.jsx
index f511ee28d..8e5c7cab8 100644
--- a/packages/enzyme-test-suite/test/ReactWrapper-spec.jsx
+++ b/packages/enzyme-test-suite/test/ReactWrapper-spec.jsx
@@ -685,7 +685,7 @@ describeWithDOM('mount', () => {
const Foo = memo(InnerFoo);
const wrapper = mount();
- expect(wrapper.debug()).to.equal(`
+ expect(wrapper.debug()).to.equal(`
@@ -701,7 +701,7 @@ describeWithDOM('mount', () => {
qux
-`);
+`);
expect(wrapper.find('InnerComp')).to.have.lengthOf(1);
expect(wrapper.find('.bar')).to.have.lengthOf(1);
expect(wrapper.find('.qoo').text()).to.equal('qux');
diff --git a/packages/enzyme-test-suite/test/ShallowWrapper-spec.jsx b/packages/enzyme-test-suite/test/ShallowWrapper-spec.jsx
index 9828f342f..79b7945a8 100644
--- a/packages/enzyme-test-suite/test/ShallowWrapper-spec.jsx
+++ b/packages/enzyme-test-suite/test/ShallowWrapper-spec.jsx
@@ -1664,7 +1664,7 @@ describe('shallow', () => {
it('works with memoizing', () => {
const wrapper = shallow();
- expect(wrapper.debug()).to.equal('');
+ expect(wrapper.debug()).to.equal('');
expect(wrapper.dive().debug()).to.equal(`
Guest
`);
diff --git a/packages/enzyme-test-suite/test/shared/methods/debug.jsx b/packages/enzyme-test-suite/test/shared/methods/debug.jsx
index 6cc407720..8ec72a1fc 100644
--- a/packages/enzyme-test-suite/test/shared/methods/debug.jsx
+++ b/packages/enzyme-test-suite/test/shared/methods/debug.jsx
@@ -71,6 +71,41 @@ export default function describeDebug({
});
describeIf(is('>= 16.6'), 'React.memo', () => {
+ describe('display names', () => {
+ function SFC() { return null; }
+ function SFCwithDisplayName() { return null; }
+ SFCwithDisplayName.displayName = 'SFC!';
+
+ const SFCMemo = memo && memo(SFC);
+ const SFCwithDisplayNameMemo = memo && memo(SFCwithDisplayName);
+
+ const SFCMemoWithDisplayName = memo && memo(SFC);
+ SFCMemoWithDisplayName.displayName = 'SFCMemoWithDisplayName!';
+ const SFCMemoWitDoubleDisplayName = memo && memo(SFCwithDisplayName);
+ SFCMemoWitDoubleDisplayName.displayName = 'SFCMemoWitDoubleDisplayName!';
+
+ it('displays the expected display names', () => {
+ const wrapper = Wrap((
+
+
+
+
+
+
+
+
+ ));
+ expect(wrapper.debug()).to.equal(`
+
+
+
+
+
+
+
`);
+ });
+ });
+
describe('defaultProps', () => {
function Add({ a, b, c }) {
return {String(a)}|{String(b)}|{String(c)}
;
diff --git a/packages/enzyme-test-suite/test/shared/methods/find.jsx b/packages/enzyme-test-suite/test/shared/methods/find.jsx
index d2240225c..cf6d8cef6 100644
--- a/packages/enzyme-test-suite/test/shared/methods/find.jsx
+++ b/packages/enzyme-test-suite/test/shared/methods/find.jsx
@@ -876,7 +876,7 @@ export default function describeFind({
const expectedDebug = isShallow
? `
-
+
bar
@@ -884,7 +884,7 @@ export default function describeFind({
qux
`
- : `
+ : `
@@ -893,13 +893,13 @@ export default function describeFind({
-
+
find me?
-
+
bar
@@ -907,9 +907,10 @@ export default function describeFind({
qux
-`;
+`;
expect(wrapper.debug()).to.equal(expectedDebug);
- expect(wrapper.find('InnerComp')).to.have.lengthOf(2);
+ expect(wrapper.find('InnerComp')).to.have.lengthOf(1);
+ expect(wrapper.find('Memo(InnerComp)')).to.have.lengthOf(1);
expect(wrapper.find('.bar')).to.have.lengthOf(1);
expect(wrapper.find('.qoo').text()).to.equal('qux');
expect(wrapper.find(InnerMemo)).to.have.lengthOf(1);