testable-mock icon indicating copy to clipboard operation
testable-mock copied to clipboard

不支持在Mock类通用方法里直接使用MOCK_CONTEXT,另外Debug其全程显示为null影响排错

Open liranGG opened this issue 4 years ago • 1 comments

    @MockMethod(targetClass = CallB.class)
    public void callMe() {
        fault(TestableTool.MOCK_CONTEXT);
    }
    
    private void fault(Map mc) {
        mc.get("123");
    
        // 不支持直接使用,必须传进来,而且debug MOCK_CONTEXT全程为null,导致我排错困难
        // TestableTool.MOCK_CONTEXT.get("123")
    }

如上例子,mock的许多方法里有共性操作,我将其提炼成一个通用方法,在通用方法里无法直接使用MOCK_CONTEXT,必须将其传参才能使用,另外debug的时候MOCK_CONTEXT全程显示为null,影响了我排错,而将其传参之后确能显示有HashMap对象了。 请求可以在另外被调方法里可以直接使用MOCK_CONTEXT,且debug的时候能显示其有对象而不是一直全程为null。

liranGG avatar Oct 21 '21 08:10 liranGG

MOCK_CONTEXT本质上是一个语法糖,会在运行期间被动态替换为一个存储在当前线程上下文里、由Testable负责维护的Map对象,它的内容会在每个测试用例开始执行前被清空。 在Debug的时候可以直接调用MockContextUtil.parameters()方法来获得这个上下文Map对象。在通用方法里也可以用这个方法替代MOCK_CONTEXT

linfan avatar Nov 22 '21 05:11 linfan