-
Notifications
You must be signed in to change notification settings - Fork 1
Associated with testing Hub
NightAngell edited this page Feb 15, 2019
·
19 revisions
private Mock<IHubCallerClients> ClientsMock { get; private set; }
public Mock<IClientProxy> ClientsAllMock { get; private set; }
public Mock<IClientProxy> ClientsAllExceptMock { get; private set; }
public Mock<IClientProxy> ClientsCallerMock { get; private set; }
public Mock<IClientProxy> ClientsClientMock { get; private set; }
public Mock<IClientProxy> ClientsClientsMock { get; private set; }
public Mock<IClientProxy> ClientsGroupMock { get; private set; }
public Mock<IClientProxy> ClientsGroupExceptMock { get; private set; }
public Mock<IClientProxy> ClientsGroupsMock { get; private set; }
public Mock<IClientProxy> ClientsOthersMock { get; private set; }
public Mock<IClientProxy> ClientsOthersInGroupMock { get; private set; }
public Mock<IClientProxy> ClientsUserMock { get; private set; }
public Mock<IClientProxy> ClientsUsersMock { get; private set; }- Create Hub
- Assign to Hub required properties using
AssignToHubRequiredProperties - Invoke Hub method
- Verify (Below example how do this)
public void TestedMethodName_TestScenario_ExpectedResult()
{
//Arrange
var exampleHub = new ExampleHub();
AssignToHubRequiredProperties(exampleHub);
//Act
exampleHub.SendAsync("NotifyAboutSomethingAwesome", "First argument", "SecondArgument");
//Assert
//Here we must use SendCoreAsync instead of SendAsync, because SendAsync is static method (extension method)
//This is no big problem see SendAsync vs SendCoreAsync below.
ClientsCallerMock
.Verify(
x => x.SendCoreAsync(
"NotifyAboutSomethingAwesome",
new object[] {"First argument" , "SecondArgument"},
It.IsAny<CancellationToken>())
);
}SendAsync method is extension method (static method) then we cannot mock it. But, it use internally SendCoreAsync, then we can use it instead. For example:
//Instead this
ClientsCallerMock
.Verify(
x => x.SendAsync(
"NotifyAboutSomethingAwesome",
"First argument",
"SecondArgument",
It.IsAny<CancellationToken>())
);
//We can use this, and this simple trick resolve entire problem.
ClientsCallerMock
.Verify(
x => x.SendCoreAsync(
"NotifyAboutSomethingAwesome",
new object[] {"First argument" , "SecondArgument"},
It.IsAny<CancellationToken>())
);