Der folgende Code wird das Anheben und Ausnahme auf einer nicht-virtuellen auf einer Schnittstelle überprüfen, MOQ beschwert sich über:Ungültige
„Invalid auf einer nicht-virtuellen überprüfen“
aber ich bin eine Schnittstelle verspotten. Ich muss diese Art von Tests ein paar Mal durchgeführt haben, aber ich bin nicht in der Lage, herauszufinden, was das Problem dieses Mal ist.
[TestFixture]
public class RegisterDeviceCommandHandlerTests
{
private RegisterDeviceCommandHandler _handler;
private readonly Mock<IClientRepository> _clientRepositoryMock = new Mock<IClientRepository>();
private readonly Mock<IMessageHandlerContext> _busMock = new Mock<IMessageHandlerContext>();
private readonly Mock<IClientEncryptionProvider> _clientEncryptionProviderMock = new Mock<IClientEncryptionProvider>();
[Test]
public async Task GivenAnUnregisteredDeviceWhenTheDeviceIsAddedThenADeviceRegistrationCompletedEventShouldBePublished()
{
_clientRepositoryMock.Setup(x => x.RegisterClient(It.IsAny<byte[]>(), It.IsAny<string>(),
It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>()))
.Returns(RegistrationClientOperationResult.Registered);
var clientIdentity = new ClientIdentity
{
HostName = "HostName",
MacAddress = "MacAddress",
MachineId = "MachineId"
};
_clientEncryptionProviderMock.Setup(x => x.DecryptIdentity(It.IsAny<byte[]>())).Returns(clientIdentity);
_handler = new RegisterDeviceCommandHandler(_clientEncryptionProviderMock.Object, _clientRepositoryMock.Object)
{
Bus = _busMock.Object
};
await _handler.HandleAsync(new RegisterDeviceCommand
{
Identity = new byte[] { 1, 2 }
});
_busMock.Verify(x => x.Publish(It.IsAny<DeviceRegistrationCompletedEvent>()));
}
}
überprüfen müssen würde ich denken werde, wenn 'Publish' ist eine Erweiterung Methode und nicht eigentlich eine Methode auf der Schnittstelle? – Nkosi
@ Nkosi du hast Recht, ich habe es gerade gefunden. Das macht die Dinge etwas komplizierter. – Marco
Wenn Sie eine Vorstellung davon haben, welches Mitglied die Erweiterungsmethode tatsächlich aufruft, können Sie dies überprüfen, aber das wäre eine gute Schätzung, wenn Sie die inneren Funktionen der Erweiterung nicht kennen. – Nkosi