Модульный тест VB с ошибкой Smocks: операция недопустима из-за текущего состояния объекта - PullRequest
0 голосов
/ 21 сентября 2018

Я пытаюсь написать модульные тесты для унаследованного кода VB с .NET Framework 4.5.2 в VS 2017. У тестируемых классов есть зависимости от классов, которые не реализуют интерфейсы или не определяют переопределенные методы, поэтому я установил Smocks 0.7.3 для поддержки Moq.Тем не менее, мои простые тестовые случаи с примерами из документации по Smocks терпят неудачу с исключением из Mono.Cecil: System.InvalidOperationException: Operation is not valid due to the current state of the object.

Я не смог найти примеры Smocks, написанные на VB, и я новичок в .NETи VB, так что это может быть просто глупой ошибкой кодирования.Буду признателен за советы по использованию Smocks в VB.

Вот тестовый класс VB:

Imports Smocks
Imports Moq

<TestClass()> Public Class SmocksTest

    <TestMethod()> Public Sub BasicSmockTestStringEquals()
        Smock.Run(
            Sub(context)
                context.Setup(Function() It.IsAny(Of String).Equals(It.IsAny(Of String))).Returns(True)
                Dim result = "Foo".Equals("Bar")
                Assert.IsTrue(result)
            End Sub)
    End Sub

    <TestMethod()> Public Sub BasicSmockTestDateTimeNow()
        Smock.Run(
            Sub(context)
                context.Setup(Function() DateTime.Now).Returns(New DateTime(2000, 1, 1))
                Dim result = DateTime.Now.Year
                Assert.Equals(2001, result)
            End Sub)
    End Sub

End Class

Вот трассировка стека:

Server stack trace: 
   at Mono.Cecil.ModuleDefinition.ProcessDebugHeader()
   at Mono.Cecil.ModuleDefinition.ReadSymbols(ISymbolReader reader)
   at Mono.Cecil.ModuleReader.ReadSymbols(ModuleDefinition module, ReaderParameters parameters)
   at Mono.Cecil.ModuleReader.CreateModule(Image image, ReaderParameters parameters)
   at Mono.Cecil.ModuleDefinition.ReadModule(String fileName, ReaderParameters parameters)
   at Mono.Cecil.AssemblyDefinition.ReadAssembly(String fileName, ReaderParameters parameters)
   at Smocks.IL.AssemblyRewriter.Rewrite(String path)
   at Smocks.AppDomains.AssemblyLoaderFactory.GetLoaderForAssembly(AssemblyName assemblyName)
   at System.Runtime.Remoting.Messaging.StackBuilderSink._PrivateProcessMessage(IntPtr md, Object[] args, Object server, Object[]& outArgs)
   at System.Runtime.Remoting.Messaging.StackBuilderSink.SyncProcessMessage(IMessage msg)
Exception rethrown at [0]: 
   at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
   at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
   at Smocks.AppDomains.IAssemblyLoaderFactory.GetLoaderForAssembly(AssemblyName assemblyName)
   at Smocks.AppDomains.AssemblyResolver.LoadAssembly(AssemblyName assemblyName)
   at Smocks.AppDomains.AssemblyResolver.LoadAssembly(AssemblyName assemblyName)
   at Smocks.AppDomains.AssemblyResolver.LoadAssembly(AssemblyName assemblyName)
   at Smocks.AppDomains.AssemblyResolver.LoadAssembly(AssemblyName assemblyName)
   at Smocks.AppDomains.AssemblyResolver.LoadAssembly(AssemblyName assemblyName)
   at Smocks.AppDomains.AssemblyResolver.LoadAssembly(AssemblyName assemblyName)
   at Smocks.AppDomains.AssemblyResolver.OnAssemblyResolve(Object sender, ResolveEventArgs args)
   at System.AppDomain.OnAssemblyResolveEvent(RuntimeAssembly assembly, String assemblyFullName)   at Smocks.AppDomains.AppDomainContext.InvokeLambda[T](SerializableLambda`1 serializableLambda, Object[] arguments)
   at Smocks.AppDomains.AppDomainContext.InvokeSerializableLambda[T](SerializableLambda`1 serializableFunc, Object target, Object[] arguments)
   at Smocks.AppDomains.AppDomainContext.Invoke[T](Action`1 action, T parameter)
   at Smocks.Smock.RunAction(Action`1 action, Configuration configuration)
   at Smocks.Smock.Run(Configuration configuration, Action`1 action)
   at Smocks.Smock.Run(Action`1 action)
   at Bestpass.EM.DataImports.Tests.SmocksTest.BasicSmockTestStringEquals() in C:\...\SmocksTests.vb:line 7
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...