实习期功能测试中的http.request

时间:2015-06-08 19:58:35

标签: node.js selenium selenium-webdriver intern

我正在尝试发布到网址以获取用户名和密码,以便我可以登录我的网站进行功能测试。我启动selenium服务器并运行此基本测试,并请求发布服务。

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": "sgfi98j@it.com",
                    "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);
});

我尝试了很多这方面的错误,并且没有得到任何错误或

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.

我在selenium / intern配置中遗漏了什么吗?

2 个答案:

答案 0 :(得分:1)

  1. ECONNREFUSED错误表示没有Selenium服务器在指定目标上运行。

  2. 此处的代码永远不会有效,因为http.request未返回Promise,它会返回ClientRequest object。如果您正在执行异步操作,则需要返回Promise或使用this.async。请参阅asynchronous test documentation,其中更详细地介绍了这两个选项。

答案 1 :(得分:0)

我从未真正使用http模块解决错误,因为我确实运行了selenium并且它仍然给我错误。但我尝试使用dojo / request,因为它返回promises并且它立即起作用。

<xsl:output method="html"/>