实习生只是挂起('/ client / end'发布/订阅不起作用?)

时间:2015-03-05 20:00:20

标签: intern

当通过intern-runner命令启动时,我的测试仍然挂起 - 实际上运行器永远不会退出给我一个报告,我可以告诉代理服务器仍然在端口9000上运行。我通过我指定的浏览器config只是保持打开状态(不,我没有将leaveRemoteOpen设置为true)。我在lib / reporter / webdriver.js中添加了一些调试,因为我看到了" Tests complete"信息。我可以看到topic.publish(' / client / end')代码被调用,但没有任何事情响应此事件。 lib / ClientSuite是否订阅此主题?从那个模块:

            topic.subscribe('/client/end', function (sessionId) {
                console.log("subscribed to '/client/end' for session", sessionId);
                if (sessionId === remote.session.sessionId) {
                    clearHandles();
                    // get about:blank to always collect code coverage data from the page in case it is
                    // navigated away later by some other process; this happens during self-testing when
                    // the new Leadfoot library takes over
                    remote.setHeartbeatInterval(0).get('about:blank').then(lang.hitch(dfd, 'resolve'));
                }
            })

但是没有任何事情发生过,我也没有看到我的console.log()输出。对不起,如果我提出的是红色鲱鱼,但我只是想先做一些初步调查。

我想要的只是我的测试结束,我的JUnit和LCOV报告生成了! :(可能出现什么问题?

注意:没有错误消息记录到命令终端,我从中调用了intern-runner config = unittest / myInternConfig。在Selenium服务器运行的终端中没有出现任何错误(至少是明显的错误)。

2015年3月15日更新:我在上一条评论中添加了这些信息,但也许在Stackoverflow的随机播放中丢失了评论。在我们传统的DOH测试中,我们使用Sinon伪造服务器,以便在单元测试中不向后端服务器发出真正的I / O请求。我没有看到在实习生测试中保持这个问题,但显然,有。当我禁用刚刚执行的测试模块时

var server = sinon.fakeServer.create();

(好吧,除了调用server.respondWith()和server.respond())

实习生完成了,我得到了我的报告等等。然后我搜索了"实习生与sinon"并偶然发现了https://github.com/theintern/intern/issues/47,其中jason0x43与https://github.com/theintern/intern/blob/sinon/sinon.js的Sinon-with-Intern代码相关联。所以,我觉得非常有帮助 - 似乎在我的情况下,Sinon的FakeXMLHttpRequest也是假冒对Intern的代理服务器的请求,这就是悬挂这个过程的原因。

因此,在使用jason0x43的sinon.js代码过滤掉"真实请求之后,"我重新启用了有问题的测试模块,重新运行,一切都运行得很好。

同样,在终端或浏览器控制台中没有报告任何错误或任何类型的警告 - 如果可能存在某种关于这个陷阱的问题,那就太棒了。即使只是在自述文件中。

1 个答案:

答案 0 :(得分:1)

(我还编辑了我的原帖以添加此信息。)在我们传统的DOH测试中,我们使用Sinon伪造服务器,以便在单元测试中不向后端服务器发出真正的I / O请求。我没有看到在实习生测试中保持这个问题,但显然,有。当我禁用刚刚执行的测试模块时

var server = sinon.fakeServer.create();

(好吧,除了调用server.respondWith()和server.respond())

实习生完成了,我得到了我的报告等等。然后我搜索了"实习生与sinon"并偶然发现了https://github.com/theintern/intern/issues/47,其中jason0x43与https://github.com/theintern/intern/blob/sinon/sinon.js的Sinon-with-Intern代码相关联。所以,我觉得非常有帮助 - 似乎在我的情况下,Sinon的FakeXMLHttpRequest也是假冒对Intern的代理服务器的请求,这就是悬挂这个过程的原因。

因此,在使用jason0x43的sinon.js代码过滤掉"真实请求之后,"我重新启用了有问题的测试模块,重新运行,一切都运行得很好。

同样,在终端或浏览器控制台中没有报告任何错误或任何类型的警告 - 如果可能存在某种关于这个陷阱的问题,那就太棒了。即使只是在自述文件中。