sshushliapin/Sitecore.FakeDb

Method 'GetReferrers' in type 'Sitecore.FakeDb.Links.FakeLinkDatabase' does not have an implementation

LukasDvorak opened this issue · 2 comments

Hi,

I am trying to run unit tests and I got stuck here

using (var db = new Db()) { }

throws

Message: 
    System.TypeLoadException : Method 'GetReferrers' in type 'Sitecore.FakeDb.Links.FakeLinkDatabase' from assembly 'Sitecore.FakeDb, Version=2.0.1.0, Culture=neutral, PublicKeyToken=null' does not have an implementation.
  Stack Trace: 
    RuntimeTypeHandle.GetTypeByName(String name, Boolean throwOnError, Boolean ignoreCase, Boolean reflectionOnly, StackCrawlMarkHandle stackMark, IntPtr pPrivHostBinder, Boolean loadTypeFromPartialName, ObjectHandleOnStack type)
    RuntimeTypeHandle.GetTypeByName(String name, Boolean throwOnError, Boolean ignoreCase, Boolean reflectionOnly, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean loadTypeFromPartialName)
    RuntimeType.GetType(String typeName, Boolean throwOnError, Boolean ignoreCase, Boolean reflectionOnly, StackCrawlMark& stackMark)
    Type.GetType(String typeName, Boolean throwOnError, Boolean ignoreCase)
    DefaultFactory.CreateType(XmlNode configNode, String[] parameters, Boolean assert)
    DefaultFactory.CreateFromTypeName(XmlNode configNode, String[] parameters, Boolean assert)
    DefaultFactory.CreateObject(XmlNode configNode, String[] parameters, Boolean assert, IFactoryHelper helper)
    DefaultFactory.CreateObject(XmlNode configNode, String[] parameters, Boolean assert)
    DefaultFactory.CreateObject(String configPath, String[] parameters, Boolean assert)
    DefaultFactory.CreateObject(String configPath, Boolean assert)
    DefaultFactory.GetLinkDatabase()
    Globals.Load()
    (Object , Object[] )
    PipelineMethod.Invoke(Object[] parameters)
    CorePipeline.Run(PipelineArgs args)
    DefaultCorePipelineManager.Run(String pipelineName, PipelineArgs args, String pipelineDomain, Boolean failIfNotExists)
    DefaultCorePipelineManager.Run(String pipelineName, PipelineArgs args, String pipelineDomain)
    DefaultCorePipelineManager.Run(String pipelineName, PipelineArgs args)
    Db.ctor(String databaseName)

I used these configurations

https://github.com/sshushliapin/Sitecore.FakeDb/blob/master/test/Sitecore.FakeDb.Tests/App.config (but with different <runtime> section)
https://github.com/sshushliapin/Sitecore.FakeDb/blob/master/src/Sitecore.FakeDb/Sitecore.config

Sitecore version: Sitecore 8.2 Update-6
Test project is running under .NETFramework 4.7.1.

Hi @LukasDvorak, I run the entire (1k+) unit tests against 8.2.6 and .net471... I can see no issues with the FakeLinkDatabase and GetReferrers... Is there any chance to provide a more precise scenario to reproduce?

I got the same error in these configurations.

Sitecore FakeDb: 2.0.1
Sitecore version: Sitecore 8.2 Update-7
Test project is running under .NETFramework 4.7.1

My solution was to use Sitecore FakeDb: 1.7.4 (net461).
And add Reference

Microsoft.Extensions.DependencyInjection 1.0.2
Microsoft.Extensions.DependencyInjection.Abstractions 1.0.2

Sitecore FakeDb: 2.0.1 = .NET Framework 4.7.1 and later
Sitecore FakeDb: 1.7.4 = .NET Framework 4.5.0 and later
Sitecore 8.2.x = .NET Framework 4.6.1

I think we need to match .NET Framework versions of FakeDb And Sitecore .