Как использовать moq для проверки того, что аналогичный объект был передан в качестве аргумента?C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Как использовать moq для проверки того, что аналогичный объект был передан в качестве аргумента?

Сообщение Anonymous »

У меня было несколько случаев, когда что-то подобное было бы полезно. Например, у меня есть AccountCreator с методом Create, который принимает NewAccount. Мой AccountCreator имеет IRepository, который в конечном итоге будет использоваться для создания учетной записи. My AccountCreator сначала сопоставит свойства NewAccount с Account, затем передаст Account в репозиторий, чтобы окончательно его создать. Мои тесты выглядят примерно так:

Код: Выделить всё

public class when_creating_an_account
{
static Mock _mockedRepository;
static AccountCreator _accountCreator;
static NewAccount _newAccount;
static Account _result;
static Account _account;

Establish context = () =>
{
_mockedRepository = new Mock();
_accountCreator = new AccountCreator(_mockedRepository.Object);

_newAccount = new NewAccount();
_account = new Account();

_mockedRepository
.Setup(x => x.Create(Moq.It.IsAny()))
.Returns(_account);
};

Because of = () => _result = _accountCreator.Create(_newAccount);

It should_create_the_account_in_the_repository = () => _result.ShouldEqual(_account);
}
Итак, мне нужно что-то заменить It.IsAny, потому что это не поможет мне убедиться, что была создана правильная учетная запись. Было бы удивительно что-то вроде...

Код: Выделить всё

public class when_creating_an_account
{
static Mock _mockedRepository;
static AccountCreator _accountCreator;
static NewAccount _newAccount;
static Account _result;
static Account _account;

Establish context = () =>
{
_mockedRepository = new Mock();
_accountCreator = new AccountCreator(_mockedRepository.Object);

_newAccount = new NewAccount
{
//full of populated properties
};
_account = new Account
{
//matching properties to verify correct mapping
};

_mockedRepository
.Setup(x => x.Create(Moq.It.IsLike(_account)))
.Returns(_account);
};

Because of = () => _result = _accountCreator.Create(_newAccount);

It should_create_the_account_in_the_repository = () => _result.ShouldEqual(_account);
}
Обратите внимание, что я изменил It.IsAny на It.IsLike и передал заполненный объект Account. В идеале, в фоновом режиме что-то должно было бы сравнивать значения свойств и разрешать проверку, если все они совпадают.

Итак, оно уже существует? Или, может быть, вы уже делали это раньше и не против поделиться кодом?

Подробнее здесь: https://stackoverflow.com/questions/112 ... s-argument
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как работает realloc, в качестве аргумента передан размер 0
    Anonymous » » в форуме Linux
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous
  • Как работает realloc, в качестве аргумента передан размер 0
    Anonymous » » в форуме Linux
    0 Ответы
    17 Просмотры
    Последнее сообщение Anonymous
  • Отдельно проверьте, является ли объект пустым списком | если объект не передан | если объект не в списке
    Гость » » в форуме Python
    0 Ответы
    82 Просмотры
    Последнее сообщение Гость
  • Moq.raiseasync приводит к System.NullReferenceException moq.raise работает нормально
    Anonymous » » в форуме C#
    0 Ответы
    6 Просмотры
    Последнее сообщение Anonymous
  • Moq.raiseasync приводит к System.NullReferenceException moq.raise работает нормально
    Anonymous » » в форуме C#
    0 Ответы
    4 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»