经过近4个工作日的整理,终于把整个系统基本都搞定:
使用了MOCK 写道
Finished in 32.84 seconds
390 examples, 0 failures, 6 pending
原来的 写道
Finished in 21 minutes 11.65 seconds
421 examples, 13 failures
现在33秒,对比以前的 20+ 分钟,好了太多了,起码不怕运行单元测试的时候睡着了。。。
6个pending ,是因为 难于MOCK。 例如: 使用了delayed_job, 调用者 与被调用者之前隔了4,5层关系,又来来回回参合了好几个delay_job,对象啥的。
一点儿心得:
1. 跟 double 相比, 手写的mock 对象非常给力. 例如:
原始对象:
class Banana
def color
"yellow"
end
end
Mock对象
class MockBanana
def color
"color in MOCK mode"
end
end
(或许,上述代码可以写成: )
# 更多,见:https://www.relishapp.com/rspec/rspec-rails/docs/mocks/mock-model
mock_banana = double("Banana"){ :color => "color in MOCK mode"}
2. mock, stub 要混合使用。 两者适合不同的粒度: mock object, stub method.
不能认准一个不放。
3. 要使系统可以在 MOCK 和 正常模式下转换,例如: 加上一个条件限制:
it "balabala@balala.com should not exists in remote server" do
DeviceResource.any_instance.stub(:find){ [] } if ENV['with_real_webservice'] != "true"
get :check_if_exists_in_server, :email => "balabala@balala.com"
response.body.should == "false"
end
然后调用的时候,可以有两种方式:
$ rspec spec
$ with_real_webservice=true rspec spec
4. 某些难于测试的方法,可能是由于设计太难造成,也可能是由于引入了 外部系统的原因造成。 解决办法是使用 设计模式 来让代码变整洁/简单/.
5. 最后, stub 的一点儿用法:
class Banana
def color
"yellow"
end
def self.size
"big"
end
end
# stub class method
Banana.stub(:size) { "super big"}
# stub instance method
Banana.new.stub(:color) { "green" }
Banana.any_instance.stub(:color) { " always yellow" }
分享到:
相关推荐
这个压缩包包含了三个具体的示例,用于演示如何使用和验证WebService的正确性。 首先,我们需要理解WebService的基本概念。WebService是一种基于XML(Extensible Markup Language)的通信协议,它利用SOAP(Simple ...
Web Service是一种通过互联网交换业务逻辑的软件系统,通常使用SOAP(Simple Object Access Protocol)协议进行通信,并且基于WSDL(Web Services Description Language)定义其接口。在Java开发环境中,常常利用API...
本文详细介绍了如何使用SOAPUI工具对SAP Webservice进行测试的过程,包括新建项目、配置测试用例、执行测试及结果分析等步骤,并给出了高级测试技巧的建议。希望本文能帮助读者更好地理解和掌握SAP Webservice的测试...
总的来说,C# WebService调用测试工具是一个强大的开发辅助工具,它帮助开发者在C#环境中测试和优化Web Service接口,支持多种数据交换格式,确保了跨平台和跨系统的互操作性。通过这样的工具,开发人员能够快速有效...
总的来说,WebserviceStudio20是一个强大的Web服务测试工具,它简化了Web服务的测试流程,帮助开发者高效地验证服务功能,确保系统的稳定性和可靠性。无论是对于开发人员还是测试工程师,它都是一个不可或缺的工具。...
LoadRunner由Micro Focus公司开发,它通过模拟大量用户并发执行业务流程,来测试系统在高负载下的性能和稳定性。在Webservice场景下,LoadRunner能够模拟调用HTTP/HTTPS协议的Web服务,评估其处理能力和服务质量。 ...
Web服务接口测试是软件开发过程中不可或缺的一环,特别是在企业级应用和服务化架构中,Webservice作为数据交换的重要手段,其正确性和性能直接影响系统的稳定运行。本文将深入探讨如何利用C#来实现Webservice的测试...
WebService是基于XML(Extensible Markup Language)的网络服务标准,它允许不同的系统通过互联网进行通信和交换数据。SOAP(Simple Object Access Protocol)是用于在Web上进行消息交换的一种协议,它是WebService...
三、使用WebService测试小工具的步骤 1. 下载安装:获取名为webServiceTest的压缩包,解压后安装或直接运行应用程序。 2. 创建新测试:在工具中新建一个测试项目,输入WebService的URL和相关参数。 3. 配置请求:...
在codefans.net这个网站上,可能会有相关的源码、教程或者论坛讨论,你可以查找有关WebService编写、调用和测试的相关资料,进一步学习和实践。 总结,WebService作为跨平台的通信手段,其编写、调用和测试是IT开发...
"webservice、http接口测试工具storm" 这个标题提到了三个关键概念:WebService、HTTP接口以及Storm。WebService是一种通过网络(通常基于HTTP协议)提供和消费服务的方式,允许不同系统间的数据交换。HTTP接口则是...
在实际应用中,Web服务常用于企业级集成,例如不同系统之间的数据交换,或者提供API供第三方开发者使用。理解并掌握Web服务的原理和技术对于任何IT专业人员来说都是极其重要的,因为这能促进系统的互操作性和可扩展...
标题中的“Postman在线测试webservice服务”是指使用Postman工具对Web Service接口进行功能验证和性能测试的过程。Postman是一款强大的API开发、测试和文档工具,尤其适用于RESTful服务,但同样可以用来测试传统的...
7. **自动化测试**:为了提高效率和减少人为错误,通常会将接口测试自动化,例如使用JUnit、TestNG等框架结合Mock服务器进行集成测试。 8. **持续集成**:将接口测试集成到持续集成/持续部署(CI/CD)流程中,每次...
WebService Mock是用于模拟WebServices的非常简单但功能强大的工具。 为什么要使用WebService模拟? 通过非侵入性方式实现模拟,甚至无需编写任何代码行,这意味着无需模拟服务存根。 可以用于对应用程序进行压力...
Web服务(WebService)是一种基于互联网的、...总的来说,Web服务接口测试是一项重要的质量保证活动,通过使用专业的测试工具,我们可以有效地确保WebService的质量、性能和安全性,为系统间的协同工作提供可靠的保障。
在实际应用中,使用WebserviceStudio20这样的测试工具,开发者可以高效地测试Web服务的正确性、稳定性和性能,确保在上线前达到预期标准。同时,它也是团队协作中,开发者与测试人员之间进行沟通和验证的有效手段,...
Web服务(WebService)是一种基于互联网的、平台独立的交互方式,它允许不同系统之间的应用程序进行通信。WebService通常采用XML(可扩展标记语言)作为数据交换格式,并通过SOAP(简单对象访问协议)在HTTP协议上...
Web服务(WebService)是一种基于开放标准的互联网应用集成技术,它允许不同的系统之间通过网络进行通信和交互。在Java世界中,使用JAXB(Java Architecture for XML Binding)库可以方便地实现XML数据与Java对象...