2016-09-21 25 views
0

我存在在我實現的具體類的NuGet包一個抽象基類,像這樣的代理對象時:FileNotFoundException異常創建使用起訂量和城堡

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); 

當我儘量在mockConcrete

var concreteObjectInstance = mockConcrete.Object 

我得到一個FileNotFoundExceptionCould not load file or assembly 'Serilog.dll'和VS點到基構造函數調用的調試器在異常從哪裏來訪問Object屬性:

base(interfaceOne, interfaceTwo)

Castle.CoreMoq版本:

<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

您的具體類是被測系統還是您將它用作實際被測系統的依賴關係? – Nkosi

+0

具體類是我想嘲笑返回值的依賴項。我正在測試的是使用它,但是它只是一個依賴項。 – httpNick

+0

如果您手動創建具體課程並通過兩個模擬,它也會失敗嗎?既然它已經具體,我沒有看到你想嘲笑它,因爲它已經使用它的依賴關係的模仿'var mockConcrete = new MyConcreteClass(mockFirst.Object,mockSecond.Object);' – Nkosi

回答

0

經過挖掘,我找到了問題的原因。它實際上與城堡或moq無關。它實際上是由在MyBaseAbstractClass<T>中引用的Nuget包引起的Metrics.NET引起的。該行在基類中:

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沒有問題,就像我原先認爲的那樣。