jestem częściowo szyderczy klasę, która ma te dwie metody:Nsubstitute wywołuje metodę w przypadku, chociaż nie jest DoNotCallBase
public void EmitTo(string connectionId, ChatMessage message)
{
Clients.Client(connectionId).broadcastMessage(message.User.UserName, message.Message);
}
public virtual void Broadcast(ChatMessage message)
{
Clients.All.broadcastMessage(message.User.UserName, message.Message);
}
W moim teście [SetUp]
mam te połączenia:
hub = Substitute.ForPartsOf<ChatHub>(myMockedClient, context, groupManager);
hub.When(x => x.Broadcast(Arg.Any<ChatMessage>())).DoNotCallBase();
hub.When(x => x.EmitTo(Arg.Any<string>(), Arg.Any<ChatMessage>())).DoNotCallBase();
mam nie ma problemów z połączeniem Broadcast
w tej linii lub później, gdy wywołuję metodę (nie robią nic zgodnie z oczekiwaniami), ale dziwnie moja trzecia linia powoduje błąd:
System.ArgumentException : Argument cannot be null or empty Parameter name: connectionId
Jestem trochę zagubiony, ponieważ zrobiłem dokładnie to samo dla obu metod i otrzymałem inne zachowanie, dlaczego moja metoda nazywa się EmitTo
?
Byłem tak skoncentrowany na reszcie, że tęskniłem za podstawowymi, bardzo dziękuję. – Lomithrani
Prawidłowa odpowiedź jest już podana, ale chciałem dodać link do dokumentacji także dla innych użytkowników: http://nsubstitute.github.io/help/partial-subs/ –