2016-09-21 12 views
0

을 사용하여 프록시 객체를 생성 할 때 :FileNotFoundException이 나는,이 같은 I가 구체적인 클래스를 구현 오전 nuget 패키지에 존재하는 기본 추상 클래스를 MOQ와 성

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

base(interfaceOne, interfaceTwo)

: 나는 내가 FileNotFoundException, Could not load file or assembly 'Serilog.dll' 및 예외가 어디에서 오는에 대한 기본 생성자 호출 VS 점에서 디버거를 얻을 mockConcrete

var concreteObjectInstance = mockConcrete.Object 

Object 속성에 액세스하려고 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와 관련이 없습니다. 이것은 실질적으로 Numrics.NET에 의해 야기되었는데 이는 MyBaseAbstractClass<T>에서 참조되는 너겟 패키지입니다. 이 라인은 기본 클래스에 있었다 :

private readonly Metrics.Timer _callTimer = Metric.Timer("", Unit.Calls, SamplingType.LongTerm, TimeUnit.Milliseconds); 

및 예외가 기본 클래스가 그 라인에 초기화 할 때마다 발생되고 있었다. I looked at the packages Metrics.NET was referencing 및 톱 LibLog. 그래서 LibLog을 조사한 결과 referencing Serilog입니다. 그래서 Serilog 패키지가 아직 찾을 수없는 이유를 모르겠지만, 어쨌든 사용되지 않았고 Metrics.NET 패키지가 제거 되었기 때문에 예외를 throw하는 행을 제거했습니다. 나는 그것이 원래 생각했던 것처럼 Castle이나 Moq에 문제가 없다는 것을 사람들이 알 수 있도록 나의 질문에 대답하고있다.