当我声明一个本机Java模块时,我发现了一个奇怪的异常——新代码没有通过单元测试。基本上,我从React Native中的NativeModules导入的任何内容都缺少定义:因此单元测试失败,因为类型错误:无法读取未定义的属性“HelloWorld”
复制步骤:
import { NativeModules } from 'react-native';
const Thing = NativeModules.SomeModule;
export const helloWorld = (addedText: string) => {
return Thing.HelloWorld(addedText);
};
export default Thing;
但错误是
TypeError: Cannot read property 'HelloWorld' of undefined
4 |
5 | export const helloWorld = (addedText: string) => {
> 6 | return Thing.HelloWorld(addedText);
| ^
7 | };
8 |
9 | export default Thing;
实际的Java是
public class SomeModule extends ReactContextBaseJavaModule {
SomeModule(ReactApplicationContext context) {
super(context);
}
@Override
public String getName() {
return "SomeModule";
}
void HelloWorld(String addedText){
try {
Log.w("HELLO_WORLD", addedText);
}
catch (Exception e) {
Log.e("DEVICE_MODULE_HELLO_WORLD_FAILED", "HelloWorld() Failed");
}
}
}
这运行良好(当您运行它时),但单元测试讨厌它。问题似乎是React Native测试缺乏对const helloWorld=(addedText: string)=结构的认识
declare namespace Thing {
function helloWorld(addedText: string): void;
}
但在单元测试中,它仍然失败,我觉得简单地假设它被忽略了是不对的,所以我假设我一定是错误地实现了一些东西。有人能说明正确的方法吗?
答案是模拟函数
在测试文件中,(对react native calls中代码的任何部分的测试(“bob chips”))(即它不导出到哪里),您必须模拟Java模块,如下所示。注意,这是启动失败测试的文件顶部的全局(一次)-可能您将helloWorld(“bob chips”)放在位置。tsx如果是,可能是位置。测验tsx失败-因为它引用了helloWorld(“bob chips”),如果在测试失败的测试中是这样的话-在内部位置。测验tsx
-在文件顶部执行一次:
jest.mock('react-native', () => {
const RN = jest.requireActual('react-native');
RN.NativeModules.SomeModule = {
HelloWorld: jest.fn(),
};
// mock modules created through UIManager
RN.UIManager.getViewManagerConfig = (name) => {
if (name === 'SomeModule') {
return { HelloWorld: jest.fn() };
}
return {};
};
return RN;
});
然后抑制
尝试测试它的笑话,并允许您在java
中编写测试以进行补偿
我正在尝试为一个现有的应用程序编写单元测试用例,该应用程序有多个模块,每个模块中都有主类。有多个类具有\@SpringBootApplication。我写了一个简单的测试用例,它失败了,错误如下。我如何继续我的测试用例中的一个。 java.lang.IllegalStateException:在文件[C:\My Data\Workspace\Services2\MicroServices\Repo
问题内容: 正如我们在http://docs.angularjs.org/tutorial/step_07中看到的那样, 建议通过e2e测试来完成路由测试, 但是,我认为’$ routeProvider’配置是通过单个函数function($ routeProvider)完成的,我们应该能够在不涉及浏览器的情况下进行单元测试,因为我认为路由功能不需要浏览器DOM。 例如, 当url为/ foo时,
我的spark应用程序中有一个方法从MySQL数据库加载数据。该方法看起来如下所示。 该方法除了执行方法并从数据库加载数据外,其他什么都不做。我该如何测试这种方法呢?标准方法是创建对象的模拟,该对象是的实例。但是由于有一个私有构造函数,所以我无法使用Scalamock来模拟它。 这里的主要问题是,我的函数是一个纯粹的副作用函数(副作用是从关系数据库拉数据),如果我在嘲笑时遇到问题,我如何单元测试这
我想找到一种方法对我的定制nginx模块进行单元测试,但失败了。有人能提供一些建议吗?我曾经找到过Test::Nginx框架,但它可以作为系统测试。有人告诉我,我可以使用ngx_lua_模块通过FFI的方式在nginx模块中公开C函数。有人知道怎么做吗?
我不熟悉匕首。我创建了一个非常简单的单元测试,试图理解我应该如何使用dagger。不幸的是,它失败了。我可能还不了解匕首的一些基本原理。 而我的测试课失败了 我认为dagger会将B注入A,因为A希望注入B,DaggerModule包含一个@Providers注释方法,该方法创建B。 更新: 我发现当我像这样编写模块类时 将B注入A作品中。然而,我不理解为什么当模块有一个构造a实例的带注释的方法时
问题内容: 我是Mocha的新手,我正试图用它来测试一个简单的React组件。如果react组件没有任何CSS样式,则测试将通过,但是如果React组件内的标签包含任何className,则会引发语法错误: Testing.react.js testing.jsx 测试将通过: 在输入标签内添加className之后,出现错误: 测试结果: 我已经在网上搜索过,但到目前为止还没有运气。我想念什么吗