Either this is true, or CNN has some of the dumbest reports covering this war. Many have been to the refugee camp that was bombed many times in the past year. They said they never seen a presence of Hamas.
This has long been an issue in Gaza. Famously with AP, even after Israel provided plenty of evidence that they were.
There could be a few explanations:
1) They are lying because they want to portray a certain narrative.
1.b) They are basing their reports on freelance reporters who lie as they are Hamas members themselves or are Hamas apologists.
2) They are lying because otherwise Hamas will kick them out and block them from being able to report. This has happened to numerous reporters and channels.
3) Hamas hides. They uses tunnels, they don't wear uniforms or name tags, and they purposefully try blend in, especially in sensitive places like schools, mosques, medical facilities, and press offices.
4) Hamas moves around. Staying in one place is asking for Israel to hit you.