こんにちは、 IUnityContainer をモックするのに苦労しています。具体的には、 Register Type が呼び出されたかどうかを確認しようとしています。これは、テストしようとしているメソッドです。
private readonly IUnityContainer _container;
public InjectorContainer(IUnityContainer container)
{
_container = container;
}
public void RegisterType(InjectorServiceModel dependencyService)
{
_container.RegisterType(dependencyService.From, dependencyService.To);
}
これは私のUnityテストクラスです:
private Mock<IUnityContainer> _unitContaineMock;
private InjectorContainer _injectorContainer;
[TestInitialize]
public void Initializer()
{
_unitContaineMock = new Mock<IUnityContainer>();
_injectorContainer = new InjectorContainer(_unitContaineMock.Object);
}
[TestMethod]
public void RegisterType_CheckIfContainerRegisterTypeIsCalled_Oance()
{
//Arrange
var injectorServiceModel = new InjectorServiceModel()
{
From = typeof(IInjectorContainerFake),
To = typeof(InjectorContainerFake)
};
bool wasCalled = false;
_unitContaineMock.Setup(x => x.RegisterType(It.IsAny<Type>(), It.IsAny<Type>())).Callback(() =>
{
wasCalled = true;
});
//Act
_injectorContainer.RegisterType(injectorServiceModel);
//Assert
Assert.IsTrue(wasCalled);
}
この状態のコードは、実際に私が最初に試した 2 回目の試行です。
[TestMethod]
public void RegisterType_CheckIfContainerRegisterTypeIsCalled_Oance()
{
//Arrange
var injectorServiceModel = new InjectorServiceModel()
{
From = typeof(IInjectorContainerFake),
To = typeof(InjectorContainerFake)
};
//Act
_injectorContainer.RegisterType(injectorServiceModel);
//Assert
_unitContaineMock.Verify(x => x.RegisterType(It.IsAny<Type>(), It.IsAny<Type>()), Times.Once);
}
どちらの場合も、次のメッセージを持つ SystemNotSuported 例外が発生します。
非仮想 (VB でオーバーライド可能) メンバーに対する無効な検証: x => x.RegisterType(It.IsAny(), It.IsAny(), new[] { })
これから理解できることから、検証しようとしているときに、3 つのパラメーターを持つ RegisterType を探しているようです。
ここで私が間違っていることを誰かが知っていますか?
RegisterType が呼び出されたかどうかをテストしようとしています。