Насмешка DataServiceQuery <TElement>

Это - то, что я делаю.

SELECT FullName
FROM
(
  SELECT LastName + ', ' + FirstName AS FullName
  FROM customers
) as sub
GROUP BY FullName
<час>

Эта техника применяется простым способом к Вашему сценарию "редактирования":

SELECT FullName
FROM
(
  SELECT
     CASE
       WHEN LastName IS NULL THEN FirstName
       WHEN LastName IS NOT NULL THEN LastName + ', ' + FirstName
     END AS FullName
  FROM customers
) as sub
GROUP BY FullName
5
задан DaveRandom 25 February 2013 в 20:03
поделиться

2 ответа

[Заявление об ограничении ответственности - я работаю в Typemock]

Рассматривали ли вы использование фреймворка для фиксации?

Вы можете использовать Typemock Isolator для создания поддельного экземпляра DataServiceQuery:

var fake = Isolate.Fake.Instance<DataServiceQuery>();

И вы можете создать аналогичный поддельный DataServiceContext и настроить его поведение вместо того, чтобы пытаться наследовать его.

0
ответ дан 15 December 2019 в 01:06
поделиться

Я решил эту проблему, создав интерфейс IDataServiceQuery с двумя реализациями:

  • DataServiceQueryWrapper
  • MockDataServiceQuery

Затем я использую IDataServiceQuery везде, где я раньше использовал бы DataServiceQuery .

public interface IDataServiceQuery<TElement> : IQueryable<TElement>, IEnumerable<TElement>, IQueryable, IEnumerable
{
    IDataServiceQuery<TElement> Expand(string path);

    IDataServiceQuery<TElement> IncludeTotalCount();

    IDataServiceQuery<TElement> AddQueryOption(string name, object value);
}

DataServiceQueryWrapper принимает в своем конструкторе DataServiceQuery , а затем делегирует все функции переданному запросу. Аналогично, MockDataServiceQuery принимает IQueryable и делегирует все возможное запросу.

Что касается имитационных методов IDataServiceQuery , я в настоящее время просто возвращаю this , хотя вы можете сделать что-то для имитации функциональности, если хотите.

Например:

// (in DataServiceQueryWrapper.cs)
public IDataServiceQuery<TElement> Expand(string path)
{
    return new DataServiceQueryWrapper<TElement>(_query.Expand(path));
}

// (in MockDataServiceQuery.cs)
public IDataServiceQuery<TElement> Expand(string path)
{
    return this;
}
4
ответ дан 15 December 2019 в 01:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: