当前node-mdns
提供了一种通过设置浏览器对象并调用browser.start()
来浏览广告mDNS服务的方法。对于可能需要在应用程序的整个生命周期中监听服务的用例,这可能会很好地发挥作用。
但是,对于一个测试用例,像browser.start(1000, [callback])
这样的调用实际上会寻找1秒钟的广告服务,然后停止浏览并调用提供的可选回调,这将非常有用。
在我的测试场景中,我启动了一个应该为服务做广告的应用程序。然后在serviceUp
上监听localhost
事件。如果找到服务,我将执行browser.stop()
和assert(true)
并通过测试。但是,如果找不到该服务,则测试用例仍会通过并且测试执行会挂起 ,因为显然,我没有在此代码路径上调用browser.stop()
。
我希望有一种方法browser.start(1000, callback)
,因此在callback
中,如果计时器到期,我可以停止浏览器和assert(false)
。
我曾考虑过在浏览器和计时器之间进行Promise.race
的操作,但是browser.start()
似乎没有返回任何内容,因此无法实现。
我能想到的唯一的其他解决方案(除了切换到node-dns-sd
之类的承诺模块之外)是setInterval
/ clearInterval
的组合,但看起来很费劲一个简单的场景。
我希望其他人也可能遇到类似的问题,并且可能已经有了解决方案。