我正在react-native-testing-library用来测试我的 react-native 组件。我有一个组件(为了这篇文章,它已经被过度简化了):
export const ComponentUnderTest = () => {
useEffect(() => {
__make_api_call_here_then_update_state__
}, [])
return (
<View>
__content__goes__here
</View>
)
}
Run Code Online (Sandbox Code Playgroud)
这是我的(简化版)component.spec.tsx:
import { render, act } from 'react-native-testing-library';
import { ComponentUnderTest } from './componentundertest.tsx';
test('it updates content on successful call', () => {
let root;
act(() => {
root = render(<ComponentUnderTest />); // this fails with below error message
});
expect(...);
})
Run Code Online (Sandbox Code Playgroud)
现在,当我运行此代码时,出现此错误:
Can't access .root on unmounted test renderer
我什至不知道这个错误消息是什么意思。我遵循了react-native-testing-library有关如何使用 …
我已经编写了这个组件。它使用钩子和状态获取数据。获取后,加载状态将更改为 false 并显示侧边栏。
我在使用 Jest 和 Enzyme 时遇到了问题,因为它确实在我的单元测试中为 Act 发出了警告。一旦我将行为添加到我的笑话和酶中,测试就失败了!
// @flow
import React, { useEffect, useState } from 'react';
import Sidebar from '../components/Sidebar';
import fetchData from '../apiWrappers/fetchData';
const App = () => {
const [data, setData] = useState([]);
const [loading, setLoading] = useState(true);
useEffect(() => {
const getData = async () => {
try {
const newData = await fetchData();
setData(newData);
setLoading(false);
}
catch (e) {
setLoading(false);
}
};
getData();
// eslint-disable-next-line
}, []);
return (
<>
{!loading
? …Run Code Online (Sandbox Code Playgroud)在 Raku 文档中关于供应方法法案(vs tap) https://docs.raku.org/type/Supply#method_act指出:
给定的代码保证一次只由一个线程执行
我的理解是一个线程必须在另一个线程必须运行它之前完成特定的代码对象。
如果是这种情况,我在尝试实现该功能时偶然发现了不同的行为。看看下面的代码片段,其中创建了 2 个“行为”并在不同的线程中运行:
#!/usr/bin/env perl6
say 'Main runs in [ thread : ', +$*THREAD, ' ]';
my $b = 1;
sub actor {
print " Tap_$*tap : $^a ", now;
$*tap < 2 ??
do {
say " - Sleep 0.1";
sleep 0.1
}
!!
do {
say " - Sleep 0.2";
sleep 0.2;
}
$b++;
say " Tap_$*tap +1 to \$b $b ", now;
}
my $supply = supply …Run Code Online (Sandbox Code Playgroud) 我正在尝试将Act 2000中的数据转换为MySQL数据库.我已成功将DBF文件导入到各个MySQL表中.但是我遇到了*.BLB文件问题,这似乎是一个非标准的备忘录文件.
DBF文件将自己标识为dbase III Plus,无备注格式.有一个*.BLB是一个备忘录文件,供多个DBF共享BLOB数据.
如果您阅读本文档:http://cicorp.com/act/sdk/ACT6-SDK-ChapterA.htm#_Toc483994053)
您可以看到该REGARDING列是一个6个字符的列.描述如下:该6字节字段由系统提供,并包含对二进制大对象(BLOB)数据库中字段的引用.
现在打开后*.BLB我可以看到块大小是64字节.所有文本块都以NULL填充到该大小.
我绊倒的地方是尝试将存储在REGARDING列中的值转换为阻止BLB文件中的位置.我的假设是6个字符字段是偏移量.
例如,REGARDING的一个值是,(忽略方括号): [ ",J$]
在我的谷歌搜索中,我发现了这个:http: //ulisse.elettra.trieste.it/services/doc/dbase/DBFstruct.htm#C1.5
它解释了在备注字段中(至少在普通的DBF文件中)空格值是忽略的(即它填充了列).
因此,如果我是正确的(再次,方括号)[",J$]应该是我的BLB文件中的偏移量.幸运的是我仍然可以访问原始的ACT2000软件,所以我可以比较程序/ MySQL和BLB文件中的全文.
使用我的示例值,我知道具有REGARDING值的DB行[ ",J$]对应于1024字节偏移(或16个块,假设我猜测64字节大小的块).
我已经尝试阅读一些Python代码,用于读取DBF文件的开源项目 - 但我已经掌握了.
我想我需要做的是将字符解包为二进制,但我不确定.
如何根据DBF文件中的内容找到基于64块的点读取?
由杰里道奇编辑
我试图将此字段中的字符串反向工程为十六进制值,然后使用整数值StrToInt64,但结果仍然与blob文件不匹配.我也试过将这个整数值乘以64而不是相乘,但是结果会在blob文件的大小之外结束,而不是实际找到任何数据.
例如,___/BD(_= space)的值转换为$2f4244十六进制,后者又转换为整数值3097156,但不与blob文件中的任何相关数据部分相对应,即使乘以或除以64也是如此.
我在VB.Net中有以下代码,我正在尝试将其转换为C#.
listContacts = ACT_FRAMEWORK.Contacts.GetContactsByID(Nothing, New Guid() {New Guid(ContactID)})
Run Code Online (Sandbox Code Playgroud)
以下是我到目前为止的尝试:
Guid[] test = new Guid[1];
test[0] = Guid.NewGuid(ContactID);
contactList = actApp.Contacts.GetContactsByID(null, test);
Run Code Online (Sandbox Code Playgroud)
由于NewGuid()不带参数,因此abover错误.我也试过了.
test[0] = contactID1;
Run Code Online (Sandbox Code Playgroud)
但是,您无法从字符串转换为Guid.有人能帮忙吗?
act ×5
c# ×1
dbase ×1
enzyme ×1
guid ×1
jestjs ×1
raku ×1
rakudo ×1
react-hooks ×1
react-native ×1
react-native-testing-library ×1
reactjs ×1
tap ×1
use-effect ×1
vb.net ×1