Moq를 사용하여 GetCollection
메서드를 조롱했지만 행이 충돌합니다.Mocking MongoCollection 충돌 - 호출 대상에 의해 예외가 throw되었습니다.
var collectionSettings = new MongoCollectionSettings
{
GuidRepresentation = GuidRepresentation.Standard,
ReadEncoding = new UTF8Encoding(),
ReadPreference = new ReadPreference(),
WriteConcern = new WriteConcern(),
WriteEncoding = new UTF8Encoding()
};
var collection = new Mock<MongoCollection<BsonDocument>>(database.Object, "MyCollection", collectionSettings);
//crashing here without any error dumped
database.Setup(f => f.GetCollection("MyCollection", collectionSettings)).Returns(collection.Object);
이것은 내가 그것을 해결하기 위해 뜨거운 대해 어떤 생각을
Exception of type 'System.ArgumentOutOfRangeException' was thrown.
Parameter name: name
at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor)
at System.Reflection.RuntimeConstructorInfo.Invoke(BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
at System.RuntimeType.CreateInstanceImpl(BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes, StackCrawlMark& stackMark)
at System.Activator.CreateInstance(Type type, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes)
at System.Activator.CreateInstance(Type type, Object[] args)
at Castle.DynamicProxy.ProxyGenerator.CreateClassProxyInstance(Type proxyType, List`1 proxyArguments, Type classToProxy, Object[] constructorArguments)
at Castle.DynamicProxy.ProxyGenerator.CreateClassProxy(Type classToProxy, Type[] additionalInterfacesToProxy, ProxyGenerationOptions options, Object[] constructorArguments, IInterceptor[] interceptors)
at Moq.Proxy.CastleProxyFactory.CreateProxy(Type mockType, ICallInterceptor interceptor, Type[] interfaces, Object[] arguments)
at Moq.Mock`1.<InitializeInstance>b__0()
at Moq.PexProtector.Invoke(Action action)
at Moq.Mock`1.InitializeInstance()
at Moq.Mock`1.OnGetObject()
at Moq.Mock.GetObject()
at Moq.Mock.get_Object()
at Moq.Mock`1.get_Object()
있어 오류가 무엇입니까?
당신이 시도/캐치를 사용하는 경우입니까? 일반적으로 이러한 종류의 실패는 일반적으로 'GetCollection'이 무시할 수 없음을 나타냅니다. – Tejs
@Tejs 오 예. 고마워! 이것은 '{ "System.ArgumentOutOfRangeException 유형의 예외가 발생했습니다. 오류입니다. \ r \ n 매개 변수 이름 : name"}' – zsong
실제 메서드 정의 인 GetCollection이 실행되고있는 것처럼 보입니다. 전화. 너의 모의가 충분하지 않다고 생각해. – Tejs