При настройке веб-службы я могу использовать класс для извлечения данных для отправки обратно клиентам. Если мне нужно будет протестировать логику, выполняемую службой, я могу добавить в нее ссылку на поддельный репозиторий, который возвращает несколько жестко закодированных объектов данных, чтобы избежать вызовов в базу данных.Является ли создание поддельного хранилища для прокси-класса поддельного веб-сервиса хорошей идеей?
На стороне клиента , однако, допустим, у меня есть веб-приложение на основе MVC, которое вызывает этот веб-сервис через прокси-сервер службы. Если я хочу, чтобы модуль тестировал логику в приложении MVC и подавал ее данные, которые являются репрезентативными для возврата службы, как я могу подделать ссылку на прокси? Мои мысли, таким образом, хотя я не чувствую себя 100% уверены в этом и интересно, если я мог бы не быть более простое решение:
Я могу настроить прокси-интерфейс (назовем его IProxy), а затем установите (скажем, прокси и FakeProxy) и вставляйте одно, соответствующее выполняемой ситуации (FakeProxy при выполнении модульных тестов и прокси для реального производственного приложения). Чтобы генерировать некоторые выборочные данные для модульных тестов без фактических вызовов службы, следует ли я реализовать поддельный репозиторий (возможно, тот же самый, который используется в сценарии сервера выше) в Fake Proxy? Я не уверен, как лучше настроить поддельный класс прокси, чтобы помочь с тестированием моего кода на стороне клиента.
Update:
Я согласен с ответами вывешенные до сих пор, но я уже рассматривал свои очки, так что позвольте мне предоставить некоторые образцы C# код, который показывает, почему я спрашиваю об этом. Если я оставить поддельное хранилище из моего дизайна прокси, мой поддельного прокси может выглядеть как этот очень простой надуманный пример:
public class FakeCustomerProxy : ICustomerProxy
{
private List<Customer> Customers;
public FakeProxy()
{
Customers = new List<Customer>();
Customers.Add(new Customer { Id = 1, Name = "Smith, John" });
Customers.Add(new Customer { Id = 2, Name = "Johnson, Al" });
Customers.Add(new Customer { Id = 3, Name = "Thomas, William" });
}
public Customer GetById(int customerId)
{
return Customers.Where(c => c.Id == customerId).FirstOrDefault();
}
}
В GetByID() метода, вместо того, чтобы позвонить в Интернет службы для получения желаемой информации о клиенте, просто возвращает ее из списка жестко запрограммированных клиентов, вложенных в этот класс. Это действительно похоже на то, что я могу настроить для фальшивого репозитория (у меня может быть очень похожий код, настроенный на стороне сервера, чтобы помочь с тестированием логики обслуживания), поэтому мне было любопытно, стоит ли мне рассматривать размещение этих жестко настроенных клиентов ссылки в выделенный поддельный класс репозитория, который будет использоваться в нескольких местах. Могу я подумать, что дизайн этого Fake Proxy совершенно не прав?
Спасибо за ответ - см. Мое обновление выше для дополнительного контекста по тому, что я прошу. Может быть, мое мышление о поддельном прокси-классе отложено назад? – Derek
См. Мой обновленный ответ, надеюсь, что это поможет вам принять правильное решение для вашего дела :). –
Думаю, я понимаю, о чем вы говорите. Если я буду следовать за вами, мне не нужно будет создавать поддельный репозиторий _and_ поддельный прокси одновременно, потому что я либо буду тестировать свой клиентский код, и в этом случае мне просто нужно подать это фиктивные данные (через поддельный репозиторий), или я буду тестировать модуль моего прокси-сервера, который должен полностью выйти за рамки этого веб-приложения. Если мне нужно подделать вызов прокси-сервера при модульном тестировании моего клиентского приложения, то насмехающийся фреймворк - это то, что я должен рассматривать для этого. Надеюсь, я здесь ничего не ошибаюсь. Огромное спасибо! – Derek