`
ginge
  • 浏览: 211831 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

jmockit 的使用示例-03全部mock的?

 
阅读更多
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();
		}

	}
}

 

分享到:
评论

相关推荐

    xe-ajax-mock1.4.5.js

    3. **文档记录**:为了团队协作,需要记录mock规则,方便其他成员理解和使用。 总之,`xe-ajax-mock`是一个强大的工具,帮助开发者在前后端分离的环境中快速进行前端开发,降低对后端的依赖,提升工作效率。通过...

    Android-okhttp-json-mock帮助你为Okhttp和Retrofit模拟json格式的数据

    使用"Android-okhttp-json-mock",你可以创建一个本地的mock服务器,这个服务器会响应你定义的特定URL,返回你想要的json数据。这在单元测试、集成测试或者在没有网络环境时都非常有用。你可以设置不同的HTTP方法...

    xe-ajax-mock1.5.7.js

    xe-ajax-mock也兼容fetch API,这意味着开发者可以使用fetch语法进行数据请求,并同样能得到模拟数据的响应。 最后,"xe-mock"这个标签可能是指xe-ajax-mock插件本身,或者是与之相关的其他模拟工具或框架。它可能...

    Laravel开发-laravel-redis-mock

    在使用`laravel-redis-mock`之前,你需要将它添加到项目的Composer依赖中。在项目根目录下的`composer.json`文件中,加入如下代码: ```json "require-dev": { "mockery/mockery": "^1.4", "predis/predis": "^...

    前端开源库-loglevel-plugin-mock

    4. **易于集成**:由于loglevel-plugin-mock是基于loglevel设计的,所以它能无缝地与已使用loglevel的项目结合。只需要简单的配置,就可以让测试环境的日志行为符合预期。 在实际项目中,我们可以通过以下步骤来...

    vite-plugin-mock:vite.use模拟插件的模拟插件

    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:vue-cli3插件模拟

    vue-cli-plugin-mock 用于本地模拟数据功能的软件包 简单的写作(Express.js风格) 观看文件更改 自动重装模拟服务器 支持esm / cjs样式模块 安装 yarn add vue-cli-plugin-mock 用vue-cli3安装 vue add vue-cli-...

    react-native-mock-render:react-native-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 ...

    react-native-mock:react native的完全模拟且易于测试的版本

    有兴趣帮助维持react-native-mock吗? React本机模拟 一个完全模拟且易于测试的react native版本 要求 Node.js 4+ 最新版本的react-native 注意:该库旨在与最新版本的react-native一起使用。 如果您使用的不是...

    前端开源库-redux-mock-store

    为了解决这个问题,开发者通常会使用像`redux-mock-store`这样的模拟存储库。 `redux-mock-store`是一个专门为Redux设计的模拟存储,它的主要目的是简化对Redux应用的单元测试和集成测试。它允许你在不实际部署完整...

    Go-stripe-mock是一个mockHTTP服务器像真正的StripeAPI一样响应

    关于文件`stripe-stripe-mock-03b8ba1`,这很可能是Go-stripe-mock的一个特定版本,可能包含了源代码、构建脚本、配置文件等资源。为了使用它,你需要按照以下步骤操作: 1. **克隆或下载项目**:将`stripe-stripe-...

    jest-canvas-mock:用于在Jest中模拟画布的模块

    对于更多的浏览器环境,您可以使用来实现实际的浏览器运行时。安装这仅应作为开发依赖项( devDependencies )安装,因为它仅用于测试。 npm i --save-dev jest-canvas-mock设置在jest下的package.json ,创建一个...

    dubbo-easy-mock:针对Dubbo接口的Mock解决方案

    使用 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的工作原理、应用场景以及如何使用它。 首先,让我们理解Go语言中的接口。在Go中,接口是一组方法签名的集合,任何类型只要实现了接口所定义的所有方法,就被称为实现了该接口。接口...

    JMOCKIT mock 静态方法 单元测试

    可以用来Mock JAVA代码中的静态方法

    express-proxy-mock:快速代理模拟

    使用背景 在前端开发中有一项很重要的工作是后台同事进行数据联调,联调你就要通过对应不同的同事ip进行通讯,这个时候你会遇到浏览器的同源策略引起的跨域问题,还有你可能想有没有快速切换不同的ip进行联调,不用...

    Python库 | enstadtpfaff-platform-mock-api-0.1.0.tar.gz

    本资源“enstadtpfaff-platform-mock-api-0.1.0.tar.gz”是一个针对Python的特定库,名为“enstadtpfaff-platform-mock-api”,版本号为0.1.0。这个库主要用于模拟API接口,为开发和测试提供便利。 API...

    gmall2020-mock-db-2021-11-14.jar

    gmall2020-mock-db-2021-11-14.jar

    swagger-to-mock:Swagger3(OpenAPI 3)的模拟数据生成器CLI

    如果您指定了示例,则JSON数据值应该是您的招摇中的示例值。 否则, swagger-to-mock遵循并生成任意值。 如果没有诸如format规则,则值应在下面。 string : " " number : 0 integer : 0 boolean : true array : []...

    前端开源库-lws-mock-response

    3. **可扩展性**:作为一个中间件,lws-mock-response 可以与其他中间件配合使用,例如,与路由处理中间件结合,实现更复杂的逻辑。 4. **易于集成**:lws-mock-response 设计简洁,API清晰,与LWS服务器的集成过程...

Global site tag (gtag.js) - Google Analytics