Я только что столкнулся с этим, но моя проблема не была связана с внутренними типами. Моя проблема была со сборкой, содержащей тип, которого нет в папке bin проекта модульного теста.
Похоже, что FakeItEasy выдает эту ошибку, когда не может разрешить тип, который должен быть подделан. (Это имеет смысл, почему внутренний тип в другой сборке может вызвать такую же ошибку.)
Итак, у меня был Project Foo, на который ссылается Project Bar. Project Bar имеет открытый интерфейс, ссылающийся на открытый тип из Project Foo. Project Bar.Tests имеет ссылку на Project Bar, но не Project Foo. Когда я собираю Bar.Tests, Bar.dll помещается в папку bin, а Foo.dll - нет. Когда FakeItEasy пытается подделать мой интерфейс, он не может определить тип, который находится в Foo.dll.
Добавление ссылки на Project Foo в мой проект Bar.Tests гарантировало, что Foo.dll завершит работу и существует для FakeItEasy, и заставило эту ошибку исчезнуть.
Итак ...
В вашем случае может случиться так, что на вашу сборку RavenDB (которая, как я предполагаю, содержит UserDocument
) ссылается только ваш реальный проект, и она не копируется в выходные данные сборки модульного теста.