Опыт — это такая вещь, которая появляется сразу после того, как была нужна...
Здравствуйте, EM, Вы писали:
EM>Hi all,
EM>Стоит задача обложить тестами существующее приложение активно общающееся с окружающим миром по REST и SOAP.
EM>Соответственно, очень хотелось бы найти уже написанный Http server который стартует из теста, вешается на свободный порт и на каждый четкий запрос отдавал бы заготовленный Mock ответ
EM>Очевидно что для поддержки REST и SOAP он должен уметь мокать по Url, query params, Http verb, POST body
Посмотрите на это --
http://www.soapui.org/
Есть вроде бесплатная версия с урезанной функциональностью.
EM>И нужно чтобы это чудо было дотнетное или имело .Net клиента
Это требование не совсем понятно...
Здравствуйте, Sharov, Вы писали:
S>Здравствуйте, EM, Вы писали:
EM>>Hi all,
EM>>Стоит задача обложить тестами существующее приложение активно общающееся с окружающим миром по REST и SOAP.
EM>>Соответственно, очень хотелось бы найти уже написанный Http server который стартует из теста, вешается на свободный порт и на каждый четкий запрос отдавал бы заготовленный Mock ответ
EM>>Очевидно что для поддержки REST и SOAP он должен уметь мокать по Url, query params, Http verb, POST body
S>Посмотрите на это -- http://www.soapui.org/
S>Есть вроде бесплатная версия с урезанной функциональностью.
Вот этого хотелось бы избежать.
Она слишком навороченная и трудоемкая в смысле встраивания в .Net ный CI. Как минимум там придется парсить output от ее тестов
Мне нужно в принципе 2 метода — Mock и Assert
подошло бы вот это
https://github.com/hibri/HttpMock
но там нет SOAP
EM>>И нужно чтобы это чудо было дотнетное или имело .Net клиента
S>Это требование не совсем понятно...
В /Net ном проекте хотелосб бы тесты тоже написать на дотнете
Опыт — это такая вещь, которая появляется сразу после того, как была нужна...
Здравствуйте, EM, Вы писали:
EM>Стоит задача обложить тестами существующее приложение активно общающееся с окружающим миром по REST и SOAP.
Мне какжется, разработать простейший WCF сервис будет не на много сложнее, чем использовать некий Mock-механизм (ну разве что ответы у вас уже в виде готовых сериализованных текстов). Ведь даже при использование какого-то фреймворка вы вынуждены будете как-то описывать варианты запросов/ответов. Так сделайте это просто кодом и дело с концом.
На крайний случай, если вам нравится нотация какого-нибудь Mock-фреймворка, в можете поступить примерно так (я использовал Moq):
using Moq;
using System;
using System.ServiceModel;
using System.ServiceModel.Description;
namespace MockWcf
{
[ServiceContract]
public interface IService
{
[OperationContract]
int GetData();
[OperationContract]
int GetData2(int a);
};
[ServiceBehavior(InstanceContextMode= InstanceContextMode.Single)]
public abstract class Service : IService
{
public abstract int GetData();
public abstract int GetData2(int a);
}
class Program
{
static void Main(string[] args)
{
var serviceMock = new Mock<Service>();
serviceMock.Setup(m => m.GetData()).Returns(1);
serviceMock.Setup(m => m.GetData2(It.IsInRange(0, 10, Range.Inclusive))).Returns(3);
serviceMock.Setup(m => m.GetData2(It.IsInRange(11, 100, Range.Inclusive))).Returns(7);
var host = new ServiceHost(serviceMock.Object, new Uri("http://localhost/MockWcf"));
host.Description.Behaviors.Add(new ServiceMetadataBehavior() { HttpGetEnabled = true });
host.AddServiceEndpoint("MockWcf.IService", new BasicHttpBinding(), "Service");
host.Open();
Console.ReadLine();
host.Close();
}
}
}
Понмаю, что не хочется возиться с инфраструктурой, но, имхо, её здесь будет совсем немного.