Moq объект всегда возвращает ноль, почему? - PullRequest
1 голос
/ 11 июля 2019

Я делаю следующий вызов moq:

var mock = new Mock<IPagoService>();
mock.Setup(m => m.GetCodigoAutorizacion(Guid.NewGuid())).Returns("e");
string p = mock.Object.GetCodigoAutorizacion(Guid.NewGuid());

Почему переменная p равна нулю?

Ответы [ 4 ]

4 голосов
/ 11 июля 2019

Если у вас есть:

mock.Setup(m => m.GetCodigoAutorizacion("A")).Returns("B");

Вы скажете, если вызвано с "A", тогда верните "B".Примечание. Если вызывается с чем-то другим, например, «C», возвращается значение по умолчанию для типа.

Так что вам нужно, если вы вызываете с any , тогда GUID возвращает «e» - вы можете использовать It.IsAny<T>().

Так что для этого случая:

mock.Setup(m => m.GetCodigoAutorizacion(It.IsAny<Guid>())).Returns("e");
2 голосов
/ 11 июля 2019

Вы используете один Guid, а другой вызов.Поскольку настройка и вызов не совпадают, возвращается значение по умолчанию.Вместо этого присвойте Guid переменной и используйте ее.

var mock = new Mock<IPagoService>();
var id = Guid.NewGuid();
mock.Setup(m => m.GetCodigoAutorizacion(id)).Returns("e");
string p = mock.Object.GetCodigoAutorizacion(id);

Если вам нужно обработать любой Guid, сделайте это вместо

mock.Setup(m => m.GetCodigoAutorizacion(It.IsAny<Guid>())).Returns("e");
0 голосов
/ 11 июля 2019

Это потому, что два вызова Guid.NewGuid() генерируют два разных значения guid, и поэтому, когда вы вызываете макет, вы передаете и совершенно новый guid из того, который был настроен.Вы можете либо сохранить первоначальное значение guid и использовать его повторно, либо, если вы не возражаете, какое это guid, вы можете использовать:
It.IsAny<Guid>() в настройках, чтобы принять любое guid.

0 голосов
/ 11 июля 2019

Guid.NewGuid() значение будет отличаться каждый раз, поэтому оно не удовлетворяет вашим условиям настройки.

Вы можете использовать Guid.Empty или какое-либо постоянное значение для этой работы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...