package jmockit.sample;
import jmockit.target.OfferPostAction;
import jmockit.target.WinportUrlServiceImpl;
import junit.framework.Assert;
import mockit.Expectations;
import mockit.Mocked;
import mockit.NonStrictExpectations;
import org.junit.Test;
/**
* 全部mock示例;一个被Mock注解的类型,默认是所有方法都被mock的。
*
* @author Ginge
*
*/
public class FullyMockTest {
@Mocked
private WinportUrlServiceImpl winportUrlService = null;
private OfferPostAction offerPostAction = new OfferPostAction();
@Test
public void testExpectations() {
final String memberId = "test2009";
// 步骤一、record (录制)
// Expectations 中需要将希望mock的调用全部声明出来
// NonStrictExpectations则不需要将希望mock的调用全部声明出来
new Expectations() {
{
// 期望被mock的调用,以及被调用时返回的结果
winportUrlService.hasWinport(memberId);
result = false; // 也可以是returns(false);
// 总共可以调用的次数
times = 1;
winportUrlService.getWinportUrlThrowException(withAny(""));
}
};
// 步骤二、replay 在此阶段,录制的方法可能会被调用
Assert.assertEquals(false, offerPostAction.hasWinport(memberId));
//如果没有被mock,下述的调用将会抛出异常,从而导致本unit test的失败;也就证明了方法默认是被 mock的
try {
offerPostAction.getWinportUrlThrowException(memberId);
} catch (Exception e) {
// fully mock,默认完全被mock,到这里就注定失败
Assert.fail();
}
}
@Test
public void testNonStrict() {
final String memberId = "test2009";
// 步骤一、record (录制)
// Expectations 中需要将希望mock的调用全部声明出来
// NonStrictExpectations则不需要将希望mock的调用全部声明出来
new NonStrictExpectations() {
{
// 期望被mock的调用,以及被调用时返回的结果
winportUrlService.hasWinport(memberId);
result = false; // 也可以是returns(false);
// 相比testExpectations方法
// 少了, times = 1;
// 也少了, winportUrlService.getWinportUrl(withAny(""));
}
};
// 步骤二、replay 在此阶段,录制的方法可能会被调用
Assert.assertEquals(false, offerPostAction.hasWinport(memberId));
//如果没有被mock,下述的调用将会抛出异常,从而导致本unit test的失败;也就证明了方法默认是被 mock的
try {
offerPostAction.getWinportUrlThrowException(memberId);
} catch (Exception e) {
// fully mock,默认完全被mock,到这里就注定失败
Assert.fail();
}
}
}
分享到:
相关推荐
mockjs在线使用安装(纱线或npm) 节点版本: > = 12.0.0 版本号: > = 2.0.0 yarn add mockjs# ornpm i mockjs -Syarn add vite-plugin-mock -D# ornpm i vite-plugin-mock -D例子运行示例 # ts examplecd ./...
vue-cli-plugin-mock 用于本地模拟数据功能的软件包 简单的写作(Express.js风格) 观看文件更改 自动重装模拟服务器 支持esm / cjs样式模块 安装 yarn add vue-cli-plugin-mock 用vue-cli3安装 vue add vue-cli-...
Mock 前端虚拟服务 - xe-ajax插件 基于 XEAjax 扩展的前端虚拟服务插件,对于前后端分离开发模式,使用 ajax+mock 就非常有必要。
React-native-mock-render 一个分叉,用于渲染组件 要求 Node.js 4+ 最新版本的react-native 安装 npm i react-native-mock-render --save-dev /* file-that-runs-before-all-of-my-tests.js */ // This will ...
对于更多的浏览器环境,您可以使用来实现实际的浏览器运行时。安装这仅应作为开发依赖项( devDependencies )安装,因为它仅用于测试。 npm i --save-dev jest-canvas-mock设置在jest下的package.json ,创建一个...
前端开源库-redux-mock-storeRedux模拟存储,用于测试Redux异步动作创建者和中间件的模拟存储
使用 1. 添加依赖 mvn clean package install (deploy) -Dmaven.test.skip=true 编译安装依赖到本地/远程仓库 <groupId>com.cmt</groupId> <artifactId>dubbo-easy-mock <version>1.1.0 <groupId>org....
开源项目-Code-Hex-funcy-mock.zip,funcy-mock generates mock file from interface go file
Laravel开发-laravel-redis-mock 这个Laravel包为您的测试提供了一个redis模拟
有兴趣帮助维持react-native-mock吗? React本机模拟 一个完全模拟且易于测试的react native版本 要求 Node.js 4+ 最新版本的react-native 注意:该库旨在与最新版本的react-native一起使用。 如果您使用的不是...
单元测试高级特性--mock模拟网络请求单元测试高级特性--mock模拟网络请求单元测试高级特性--mock模拟网络请求单元测试高级特性--mock模拟网络请求单元测试高级特性--mock模拟网络请求单元测试高级特性--mock模拟网络...
可以用来Mock JAVA代码中的静态方法
使用背景 在前端开发中有一项很重要的工作是后台同事进行数据联调,联调你就要通过对应不同的同事ip进行通讯,这个时候你会遇到浏览器的同源策略引起的跨域问题,还有你可能想有没有快速切换不同的ip进行联调,不用...
使用 vue+vue-router+resquirejs+xe-ajax+mock 前端项目例子
okhttp-json-mock:帮助你为Okhttp和Retrofit模拟json格式的数据
如果您指定了示例,则JSON数据值应该是您的招摇中的示例值。 否则, swagger-to-mock遵循并生成任意值。 如果没有诸如format规则,则值应在下面。 string : " " number : 0 integer : 0 boolean : true array : []...
但是这些软件包没有正确地集成到故事书中,也没有范围可以使用故事书中的这些api。 storybook-addon-mock在故事书中提供了专门的面板,可帮助开发人员查看和更新具有多种场景的api。如何使用将插件作为开发依赖...
前端开源库-lws-mock-responseLWS模拟响应,中间件向LWS添加模拟响应
前端开源库-koa-mock-responseKoa模拟响应、模拟RESTAPI或任何后端服务。
前端开源库-simple-mock简单的模拟,超级简单的存根和间谍与一步沙盒恢复