我有一个基本的抽象类,它存在于一个nuget包中,我正在实现一个具体的类,如下所示:
public class MyConcreteClass : MyBaseAbstractClass<SomeType> {
public MyConcreteClass(IAnInterfaceOne interfaceOne, IAnInterfaceTwo interfaceTwo) : base(interfaceOne, interfaceTwo) { }
}
我正在嘲笑这两个参数:
var mockFirst = new Mock<IAnInterfaceOne>();
var mockSecond = new Mock<IAnInterfaceTwo>();
和具体类一样:
var mockConcrete = new Mock<MyConcreteClass>(mockFirst.Object, mockSecond.Object);
当我尝试访问Object
mockConcrete
属性时
var concreteObjectInstance = mockConcrete.Object
我得到一个FileNotFoundException
,Could not load file or assembly 'Serilog.dll'
,VS中的调试器指向异常来源的基础构造函数调用:
base(interfaceOne, interfaceTwo)
Castle.Core
和Moq
版本:
<package id="Castle.Core" version="3.3.3" targetFramework="net452" />
<package id="Moq" version="4.5.21" targetFramework="net452" />
我搜索了基类所在的nuget包,并且没有serilog的引用或用法。我searched Castle.Core
's repo and found many usages of serilog我相信它是一个日志库。所以我对这个异常是如何发生以及我如何尝试解决它有点困惑,所以当我模拟我的对象时它不会抛出异常。
答案 0 :(得分:0)
MyBaseAbstractClass<T>
中引用的nuget包。这一行在基类中:
private readonly Metrics.Timer _callTimer = Metric.Timer("", Unit.Calls, SamplingType.LongTerm, TimeUnit.Milliseconds);
每次在该行初始化基类时都会抛出异常。我looked at the packages Metrics.NET
was referencing并看到了LibLog
。所以我查看了LibLog
并看到它是referencing Serilog
。所以我不确定为什么在这些软件包中仍然找不到Serilog
,但我删除了引发异常的行,因为它仍然未被使用,并且还删除了Metrics.NET
包。我正在回答我的问题,以确保人们知道Castle或Moq不像我原先认为的那样。