Update as of version 1.2.7
You should no longer need to call the setEntityTypeForResourceName or addDataService methods in order to accomplish the mocking setup you described.
--- Previous answer ----------------------------------------
You are very close. All you need to do is add the following two lines
mockMetadataStore.setEntityTypeForResourceName("Tag", et); // or "Tags"
mockMetadataStore.addDataService(mockDataService);
after this line
mockMetadataStore.addEntityType(et);
Neither of these should actually be required in this case, but for now they are. The need for this "extra" code will be removed in the next release. These methods are still useful but just not in this specific case.
Also, you should change either your defaultResourceName or your EntityQuery.from clause so that the names match. (This includes case - see comment below).
The reason is that the defaultResourceName is the name of the "collection/resource" that you are querying, not the name of the "entityType", i.e. the resource names are what you are passing into the EntityQuery.from clause. A good convention is that the resource name is the pluralized version of the entityType name that it queries, although this is by no means required. So you can either change either the "from" clause or the "defaultResourceName"
Side note, multiple resourceNames can return the same entityType, hence the "default" in the name "defaultResourceName".
In addition, only property names go thru namingConventions' conversion, so your resourceNames should be exactly what the server expects them to be.