2015-06-08 2 views
0

Я пытаюсь опубликовать URL-адрес, чтобы получить имя пользователя и пароль, чтобы я мог войти на мой сайт, чтобы выполнить функциональное тестирование. Я запускаю сервер selenium и запускаю этот базовый тест с запросом на службу проводки.http.request in intern функциональный тест

define([ 
'intern!object', 
'runtime/testConfig', 
'intern/dojo/node!nconf', 
'intern/dojo/node!http' 

], function(registerSuite, conf, nconf, http) { 

var tests = { 

    name: 'Login test', 

    'Test': function() { 

     return http.request({ 
       host: 'posttestserver.com', 
       path: '/post.php', 
       json: true, 
       method: 'POST', 
       body: { 
        "userName": "sgfi98j", 
        "password": "sgfi98j", 
        "userEmail": "[email protected]", 
        "sourceCode": "TEST", 
        "region": "US" 
       }, 
       headers: { 
        'Content-Type': 'application/json' 
       } 
      }, function(response) { 
      // Continuously update stream with data 
      var body = ''; 
      console.log("getting data"); 
      response.on('data', function(d) { 
       body += d; 
       console.log("."); 
      }); 
      response.on('end', function() { 
       console.log("done"); 
       console.log(body); 
      }); 
      response.on('error', function(e) { 
       console.log("ERROR :("); 
       console.log(e.message); 
      }); 
     }); 
    } 
}; 

registerSuite(tests); 
}); 

Я пробовал много verions этого и либо не получают никакой ошибки или

Warning: FATAL ERROR 
Error: [POST http://localhost:4444/wd/hub/session] connect ECONNREFUSED 
Error: connect ECONNREFUSED 
    at exports._errnoException <util.js:746:11> 
    at TCPConnectWrap.afterConnect [as oncomplete] <net.js:1000:19> Use --force  to continue. 

я упускаю что-то в моем селеном/стажер конфигурации?

ответ

0

Я никогда не разбирался в ошибке с помощью модуля http, потому что у меня был селен, и он все еще выдавал мне ошибку. Но я попытался использовать dojo/request, потому что он возвращает обещания, и он сразу сработал.

define([ 
"intern!object", 
"runtime/testConfig", 
"intern/dojo/node!nconf", 
"intern/dojo/request", 
"intern/chai!expect" 

], function(registerSuite, conf, nconf, request, expect) { 

var tests = { 

    name: "Login test", 

    "Test": function() { 
     request.post("http://requestb.in/qlnoyyql", { 
      data: JSON.stringify({ 
       userName: "gz4nio4", 
       password: "sdfgsdfgsdgf4", 
       userEmail: "[email protected]", 
       billingCode: "abc-123", 
       sourceCode: "TEST", 
       companyName: "gwzanio4", 
       region: "US", 
       partner: "NONE" 
      }), 
      headers: { 'Content-Type': 'application/json' } 
     }).then(function(response) { 
      console.log(response); 
     }, function(err) { 
      console.log(err); 
     }, function(evt) { 
      console.log(evt); 
     }); 
    } 
}; 

registerSuite(tests); 
}); 
1
  1. Ошибка ECONNREFUSED указывает, что сервер селена, работающий по указанной цели, отсутствует.

  2. Ваш код здесь никогда не будет работать, потому что http.request не возвращает Promise, он возвращает ClientRequest object. Если вы выполняете асинхронную операцию, вам нужно вернуть Promise или использовать this.async. См. asynchronous test documentation, который описывает оба этих параметра более подробно.

+0

Я знаю, что ошибка распространена, поскольку селен не работает, но странно, что у меня был селен. Я посмотрел немного больше на обещания и переключился на модуль запроса, который вернул обещания, и это сработало. – mziemer

Смежные вопросы