Как мне смоделировать слой данных в службе WCF? - PullRequest
2 голосов
/ 13 декабря 2011

У меня есть служба WCF, которая размещается с помощью wshttpbinding под службой Windows.

public interface ICalculator
{
  public IDataLayer DataLayer {get;set;}

public List<string> GetResult()
{
  return DataLayer.Calculate();
}

Я разместил службу и добавил ссылку на службу в моей библиотеке классов тестирования.Я хочу смоделировать слой данных, чтобы я мог проверить, был ли вызван метод Calculate.Как издеваться над ссылкой на DataLayer?

Какова стратегия тестирования для WCF?Стоит ли сначала размещать службу и выполнять тесты или сначала проверять библиотеку службы, а затем размещать ее?

Я использую MOQ и NUnit.

Спасибо

1 Ответ

3 голосов
/ 13 декабря 2011

Чтобы получить постоянный ответ:

var mock = new Mock<IDataLayer>();
mock.Setup(d => d.Calculate()).Returns("what ever value you want to return");

Чтобы убедиться, что он был вызван:

mock.Verify(d=> d.Calculate());

Сначала вам нужно самостоятельно протестировать класс WCF, чтобы проверить поведение.На самом деле хостинг сервиса и использование прокси-клиента - это интеграционный тест.

Так что создайте NUnit TestFixture для сервиса (который, я думаю, называется Калькулятор).Обращайтесь с ним в NUnit как с обычным классом и выполните все свои тесты, смоделируйте DataLayer, чтобы получить результаты с результатами и выясните, был ли он вызван или нет, когда вы ожидаете, что он будет вызван.

...