Java 将属性设置为模拟对象jmock
是否可以将值分配给模拟对象。例:Java 将属性设置为模拟对象jmock,java,unit-testing,junit,jmock,Java,Unit Testing,Junit,Jmock,是否可以将值分配给模拟对象。例: myMockObject = context.mock(MyObject.class); myMockObject.setId("someId"); 我正在测试的方法已经到了最后,但是在最后有一个验证该对象的方法,所以没有id的对象被认为是无效的。还有什么我能做的吗 我可以指定ok吗?我希望出现此异常,但还是通过了测试 我找到了此链接,但找不到解决方案: 我希望记录器抛出消息字符串的验证异常,以前有人有过这种经验吗 我试过这个: context.check
myMockObject = context.mock(MyObject.class);
myMockObject.setId("someId");
我正在测试的方法已经到了最后,但是在最后有一个验证该对象的方法,所以没有id的对象被认为是无效的。还有什么我能做的吗
我可以指定ok吗?我希望出现此异常,但还是通过了测试
我找到了此链接,但找不到解决方案:
我希望记录器抛出消息字符串的验证异常,以前有人有过这种经验吗
我试过这个:
context.checking(new Expectations() {
{
allowing(logger).error(with(exceptionMessage));
}
});
注意exceptionMessage消息由验证方法抛出,该方法在我正在测试的方法末尾验证对象。您需要添加一个期望值,该期望值会导致模拟方法返回您期望的值:
allowing (myMockObject).getId(); will(returnValue("someId"));
这将导致getId返回您期望的值,并且由于它使用的是允许调用计数,因此如果不调用它,它不会导致测试失败。这就是我想要的答案:
我将在哪里编写此代码?在
context.checking(newexpectations(){
或?我遇到编译错误,找不到stubs方法stubs()未为类型myMockObject定义effort@c0mrade您使用的是哪个版本的jMock?@c0mrade经过编辑以反映jMock的正确版本,请参见上文。此验证方法不会调用问题所在的getter方法,但它会将验证错误发送给记录器,因此我认为记录器可能会发送某些消息,但我猜版本不支持(eq(errorString)),正如我在编辑中发布的链接所示