Как проверить работу OneWay WCF с Fitnesse
В нашем текущем приложении мы пытаемся использовать WCF netMSMQBinding, который требует, чтобы контракт на эксплуатацию был помечен как односторонний.
Мы также пытаемся использовать Fitnesse в качестве нашего механизма тестирования. В нашем тестовом примере нам необходимо протестировать сценарий от начала до конца, что означает, что мы не можем использовать односторонние операции, потому что они будут возвращены, как только сообщение будет помещено в queue и fitnesse попытаются утвердить результаты, но в реальном сообщении могут или не могут быть обработаны еще. Поэтому, если мы используем односторонние операции, нам нужно как-то подождать, пока не закончится их выполнение.
Подходы пытались / Исследования на..
Измените OperationDescription во время хостинга, прочитав конфигурацию, чтобы при размещении в Fitnesse IsOneWay был False, но в рабочем состоянии IsOneWay имел значение True, а затем привязка пользовательского MSMQ только в рабочем состоянии и для тестирования использовала tcp или netnamedpipe.
Мы пытались создать собственный ServiceHost и изменить OperationDescription до открытия Service, но в классе OperationDescription свойство IsOneWay доступно только для чтения и, глядя на.Net Framework Code, возвращает количество сообщений. По моему мнению, я должен переопределить операцию CreateDescription Service Host и должен предоставить пользовательскую реализацию. Похоже на то
Создайте в Fitnesse приспособление для монитора, которое каким-то образом будет ждать обработки сообщения.
Подход 1: Создайте пользовательскую таблицу БД, в которой хранится MessageId и завершенный статус, и в конце каждой обработки сообщения введите запись в эту таблицу. Так что теперь приспособление fitnesse может просто опросить таблицу и дождаться окончания выполнения.
Подход 2: Каким-то образом опросите MSMQ и узнайте, когда обрабатывается сообщение. Мы все еще ищем, как это сделать.
Пожалуйста, предложите любые указатели для текущих подходов или любого нового подхода.
1 ответ
Я предлагаю № 2 лучше. С #1 вы больше не тестируете систему, так как она будет работать в производственной среде. Я предполагаю, что вы хотите проверить некоторые бизнес-условия после обработки сообщения. Можете ли вы опросить, чтобы это условие бизнеса было правдой? Я думаю, что это лучший подход, чем 2.1 или 2.2, где вы опрашиваете техническое состояние.