【问题标题】:Mock/stub Arguments.createMap during testing测试期间模拟/存根 Arguments.createMap
【发布时间】:2017-11-28 14:24:04
【问题描述】:

在 React Native 库中有一个类 https://github.com/facebook/react-native/blob/master/ReactAndroid/src/main/java/com/facebook/react/bridge/Arguments.java 用于 Bundles。我正在使用 PowerMockito 模拟 Arguments.createMap() 方法并返回具有以下 sn-p 的对象:

PowerMockito.when(Arguments.createMap()).thenAnswer(
            new Answer<Object>() {
                @Override
                public Object answer(InvocationOnMock invocation) throws Throwable {
                    return new JavaOnlyMap();
                }
            });

我正在测试的方法在运行测试时出现错误并显示以下消息:

java.lang.UnsatisfiedLinkError: no reactnativejni in java.library.path

执行此行时:

WritableMap map = Arguments.createMap();

有什么想法吗?

【问题讨论】:

  • 根据经验是的,在这种情况下我需要
  • 您使用的是什么版本的 Java?
  • 您能添加您的 pom.xml 依赖项或您正在使用的 JAR 吗?
  • 我认为这是不可能的。 Arguments.createMap() 依次调用 ReactBridge.staticInit 调用 SoLoader.loadLibrary("reactnativejni");

标签: java android react-native bundle


【解决方案1】:

Answer&lt;Object&gt; 提取到一个变量中。当您使用 new 运算符作为参数时,Mockito 不喜欢它。

试试这样的:

Answer<Object> answer = new Answer<Object>() {
  @Override
  public Object answer(InvocationOnMock invocation) throws Throwable {
    return new JavaOnlyMap();
  }
}

PowerMockito.when(Arguments.createMap()).thenAnswer(answer);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-25
    • 1970-01-01
    • 2011-09-15
    • 1970-01-01
    • 1970-01-01
    • 2017-11-28
    • 1970-01-01
    相关资源
    最近更新 更多