mock和fake的区别









fake:说话,讲真话;


mock: adj. 模拟的; 仿制的; 虚假的; 不诚实的;


今天看到一位大牛的测试框架中提到fake,特查阅了一下。


mock对象是指对外面依赖系统的模拟,在运行时刻可以根据假设的需求提供期望的结果。fake对象是一种虚假的实现,内部使用了固定的数据或逻辑,只能返回特定的结果。

fack是一种实体的模拟,而mock是对逻辑的模拟。


如何写Fake的方法:
1,在代码中有依赖,比如代码依赖ABC.cpp文件里的方法。这些方法还没有实现,这是应该是拿到了这些包含了这些方法的定义的头文件,ABC.h。 
2, 创建一个Fake程序,Fake_ABC.cpp和Fake_ABC.h.  在Fake_ABC.h里include ABC.h. 并定义新的行为Fake_action_1(), Fack_action_2(). 这些行为多数是用来帮助获取Fake object的状态。
3,   实现ABC.h里定义的行为,和Fake_ABC.h定义的额外增加的辅助测试的行为
4,构建TDD 测试case,写production code


Fake更像是Stub,是对被Fake,Stub的对象做简单的返回值处理。多少情况是程序的依赖程序不ready。而Mock是为了验证依赖对象和被测程序的交互。需要花更多的功夫去实现。有时候被Mock对象是硬件依赖的,被Mock对象的实现是存在的,只是不能放入off-target测试环境里。这时候就需要对该对象进行Mock。和上述方法一样,只是需要保证被Mock对象的实现.c,.cpp文件不能在测试项目里面。否则Mock的函数实现和真实代码的函数实现就会重复导致编译链接错误。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
APEX Callout Mocking 是一种在测试 APEX Callouts 时模拟 HTTP 响应的技术。它允许您测试 APEX Callouts 的逻辑而不需要真正发送请求和接收响应。在测试中,您可以编写一个 Mock HTTP Service,以模拟实际的 HTTP 响应。这个 Mock Service 可以返回预定义的响应,而不是实际的 HTTP 请求。这样,您就可以测试您的 APEX Callout 逻辑,而不必关心实际的 HTTP 请求和响应。 为了使用 APEX Callout Mocking,您需要使用 Test.setMock() 方法来设置一个 Mock HTTP Service。这个 Mock Service 必须实现 HttpCalloutMock 接口,并且必须定义一个 respond() 方法来返回预定义的响应。 下面是一个简单的例子,展示了如何使用 APEX Callout Mocking: ``` @isTest private class MyCalloutTest { @isTest static void testCallout() { // Set up a mock response for the HTTP callout Test.setMock(HttpCalloutMock.class, new MyMockHttpResponseGenerator()); // Call the method that makes the HTTP callout HttpResponse response = MyCallout.makeCallout(); // Verify that the response is as expected System.assert(response.getStatusCode() == 200); System.assert(response.getBody() == 'Hello world!'); } } private class MyMockHttpResponseGenerator implements HttpCalloutMock { public HttpResponse respond(HttpRequest request) { // Create a fake HTTP response HttpResponse response = new HttpResponse(); response.setHeader('Content-Type', 'text/plain'); response.setStatusCode(200); response.setBody('Hello world!'); // Return the fake response return response; } } ``` 在这个例子中,我们设置了一个 Mock HTTP Service,并在测试中调用了一个 APEX Callout。Mock Service 返回了一个预定义的 HTTP 响应,然后我们验证了响应的状态和内容。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值