php – 单元测试插座

前端之家收集整理的这篇文章主要介绍了php – 单元测试插座前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
问候堆叠花,

我有一个存在通信抽象层的应用程序.该层的每个实现(称为连接器)为我的应用提供了与连接的对等体(例如,通过HTTP,TCP套接字,UDP套接字等)交换数据的方法.

例如,我有一个Connector_Tcp类来实现诸如读,写,打开和关闭之类的方法.

我需要为该类写一个单元测试.我知道单元测试应尽可能少的依赖.不幸的是,在这种情况下,依赖关系是一个系统资源:一个socket;我不能绕过它.

我需要一些关于单元测试这个课程的建议.

在我看来,即使这个类正在使用系统资源,它应该被测试为所有其他连接器,以确保它符合我的应用程序建立的标准.

我担心这样的事情是有约束力的碰撞(地址已经在使用中的错误)和阻塞.我不希望单元测试失败,因为端口已被系统服务使用,与我的应用无关.

我在我的日子做了很多单元测试,但是没有一个依赖于这样一个低级别的资源是套接字.

您将如何处理单元测试基于套接字的类?为每个单元打开一个插座?使用单个服务器类,然后使用手动定义的套接字资源连接到它并测试它?

我想我的问题真的是如下:

如果单元测试失败…我怎么知道:

>套接字已被另一个进程使用;
单位测试写得不好要么
方法的行为不正确(这是单位测试值得的).

我需要单元测试才能测试方法是否已经正常运行…

我已经写了一个类似的抽象层,尽管在C/C++中,我有机会对基于套接字的代码进行单元测试.我不知道这里有什么特定的东西,所以我只是提供一些通用的建议.

>在您的安装程序中创建一个服务器套接字,将其关闭.根据您是否支持连接到服务器套接字的许多客户端,您可能希望在测试方法中执行该部分.
>假设您可以在客户端代码中指定要连接的端口,请将服务器套接字绑定到端口0(临时端口),然后在客户端代码中使用.这将消除绑定到已经使用的端口的问题.
>在套接字上设置超时.如果您的测试由于某些意外的原因而失败,您不希望它等待永久连接.
>您需要能够交织客户端/服务器的行为.例如,您将需要测试如果服务器通过客户端读/写方式将连接的一端关闭一半,则会发生什么.异步I / O或多线程都可以做到这一点.我不知道你在PHP中的处理方式.

原文链接:https://www.f2er.com/php/132702.html

猜你在找的PHP相关文章