MOQ 4.0: Der typeninitialisierer für 'Moq.Mock - `1' hat eine Ausnahme ausgelöst
Ich bin immer die Ausnahme
Der typeninitialisierer für 'Moq.Mock - `1'
warf eine Ausnahme.
Verwendung Moq 4.0 habe ich überprüft, um auf ein paar Foren, und Sie weisen auf die Verwendung der Moq-NoCastle version. Ich habe beides ausprobiert und diese version in der Moq-Ordner. Beide mit dem gleichen Ergebnis.
Habe ich eine Lösung mit 2 Projekte, eins für mein interface, eine für meine tests. Mein Haupt-Projekt hat 2 Dateien:
IMyInterface.cs:
using System;
namespace Prototype
{
public interface IMyInterface
{
int Value { get; set; }
void ProcessValue();
int GetValue();
}
}
Mein Programm.cs-Datei hat nur die Standard-code, der generiert mit dem Projekt.
Mein test-Projekt eine einzelne Datei für meinem dummy-test - Testprogramm.cs
using System;
using NUnit.Framework;
using Moq;
namespace Prototype.UnitTests
{
[TestFixture]
public class TestProgram
{
Mock<IMyInterface> mock;
[TestFixtureSetUp]
void TestSetup()
{
mock = new Mock<IMyInterface>();
mock.Setup(x => x.GetValue()).Returns(2);
}
[Test]
public void RunTest()
{
IMyInterface obj = mock.Object; /* This line fails */
int val = obj.GetValue();
Assert.True(val == 2);
}
}
}
Laut Dokumentation alles ist gut und richtig, und es kompiliert schön. Das problem kommt, wenn ich versuche, um den test auszuführen. Es wird zu der Zeile oben und stürzt mit der Ausnahme:
Der typeninitialisierer für 'Moq.Mock - `1'
warf eine Ausnahme.
Ich kann nicht sehen, was läuft hier falsch, kann jemand etwas Licht auf Sie?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich war Ihr test erfolgreich, nachdem Sie die folgenden änderungen:
TestSetup()
öffentlichenRunTest
geändertint val = obj.Value
zuint val = obj.GetValue()
- das war nur, um dieAssert
zu übergeben.Ich bin nicht vertraut mit NUnit (ich benutze xUnit), aber meine Vermutung ist TestSetup() sein eigenes problem. Bei dieser Methode ist private, NUnit zeigt diese Ausnahme für mich:
Vielleicht verwenden Sie eine ältere version von NUnit, die verarbeitet diese situation anders (ich habe gerade heruntergeladen 2.5.7.10213).
HTH
Dies geschah zu mir, wenn ich aktualisiert die Burg.Kern NuGet-Paket auf die version 4.0.0. Etwas hat sich verändert, dass ist nicht ordnungsgemäß mit neuesten Moq (v4.5.30) in diesem moment.
Ich löste diese, indem Sie zurück zum Schloss.Der Core-version 3.3.3.
Hatte ich eine ähnliche Ausnahme mit Moq (hatte es vorher geklappt).
Für mich die Lösung war die Verwendung von NuGet zu deinstallieren Moq und die Versammlung über die Ausnahme erwähnt. Und dann re-installieren Moq NuGet und eine NuGet-updates, die danach erschienen.
Hatte ich auch dieses Problem mit Moq, aber etwas anders als Richard.
Mein Fehler war der folgende.
In meinem Fall musste ich nicht entfernen Mock, installieren Sie die fehlenden Montage in der richtigen version. Ich weiß nicht, warum dies nur ein Problem jetzt. Das Problem passiert nach der Zusammenführung der Zweige, aber beide Zweige hat weder Baugruppen noch zeigte dieser Fehler vor. Aber, Ende gut alles gut.