2016-01-05 5 views
0

Когда я запускаю dredd, кажется, что он просто зависает после первого вызова api. Я не уверен, как отлаживать или диагностировать. Я запускаю службу asp.net 5 mvc 6 api с командой dnx web. Как я могу узнать, что происходит или что может быть проблема?Dredd, кажется, висеть с api-вызовами на сервере asp.net kestrel

Я попытался добавить крючки для отладки и увидеть, что он вызывает первый api, а затем просто никогда не запускает событие after. Я тестировал api с почтальоном и завивал с правильными результатами. Dredd также работает с одним и тем же планом, если я использую экспресс-узел node.js.

Единственной комбинацией, которая терпит неудачу, является Dredd с ответом сервера kestrel asp.net. Сервер регистрирует, что запрос сделан, и отправляется ответ, поэтому он запускает тест, но просто не заканчивается.

Dredd ищет какой-то обработчик после обработки, потому что я вижу сервер, получающий запрос с dredd, независимо от .net или node.js. Даже если я развожу процесс .net api в другом процессе, это не сработает, почему это важно? Это должно быть просто HTTP-запросы для dredd в любом случае?

Заботится ли он, чтобы он возвращался с сервера пустельги?

ответ пустельга

Content-Type → application/json; charset=utf-8 
Date → Wed, 06 Jan 2016 17:14:10 GMT 
Server → Kestrel 
Transfer-Encoding → chunked 

Body {"foo":"bar"} 

dredd.yml

dry-run: null 
hookfiles: null 
language: nodejs 
sandbox: false 
server: dnx web 
server-wait: 3 
init: false 
names: false 
only: [] 
output: [] 
header: [] 
sorted: false 
user: null 
inline-errors: false 
details: false 
method: [] 
color: true 
level: verbose 
timestamp: false 
silent: false 
path: [] 
blueprint: test.apib 
endpoint: 'http://localhost:5000' 

выход консольной dredd команды

Starting server with command: dnx web 
Waiting 3 seconds for server command to start... 
Hosting environment: Production 
Now listening on: http://localhost:5000 
Application started. Press Ctrl+C to shut down. 
info: Beginning Dredd testing... 
info: Found Hookfiles: hooks.js 
hook: before all 
hook: before each 
info: Microsoft.AspNet.Hosting.Internal.HostingEngine[1] 
     Request starting HTTP/1.1 GET http://localhost:5000/message 
info: Microsoft.AspNet.Mvc.Controllers.ControllerActionInvoker[1] 
     Executing action method Foo.Controllers.HelloController.Get with arguments() - ModelState is Valid' 
info: Microsoft.AspNet.Mvc.Infrastructure.ObjectResultExecutor[1] 
     Executing ObjectResult, writing value Microsoft.AspNet.Mvc.ActionContext. 
info: Microsoft.AspNet.Mvc.Infrastructure.MvcRouteHandler[2] 
     Executed action Foo.Controllers.HelloController.Get in 0.0165ms 
info: Microsoft.AspNet.Hosting.Internal.HostingEngine[2] 
     Request finished in 0.041ms 200 application/json; charset=utf-8 

test.apib

# GET /message 
+ Response 200 (application/json; charset=utf-8) 

     {"foo":"bar"} 
+0

Не мог бы вы поделиться со мной APIBlueprint вы используете? – Vincenzo

+0

уверен, я добавил план выше и обновил более простой выход на консоль. Я использовал один и тот же проект с узлом node.js express server, и он работает ... только что-то о том, чтобы сделать запрос против dnx .net web api .. Он ищет какой-то обработчик, потому что я вижу, что сервер получает запрос. Даже если я начну процесс api в другом процессе, это не сработает, почему это важно? Это должно быть просто HTTP-запросы для dredd в любом случае? – MonkeyBonkey

ответ

0

Это правильно передается на моей машине (MacOSX с coreclr mono rc2) То же самое касается версии nodejs, которую вы предоставили в репо.

Единственное, что я должен был изменить в моем приложении была команда запуска: dnx run --server Microsoft.AspNet.Server.Kestrel

, но я не думаю, что это проблема.

image