我想断言一个条件,我知道该条件不会立即为真,但在异步操作之后可能为真,此时测试应该失败。
假设我正在测试这个计数器组件:
function Counter() {
const [value, setValue] = useState(1);
function decrement() {
if (value >= 0) { // <- off by one bug
someAsyncAction().then(() => setValue(value - 1));
}
}
return (
<>
Value is {value}
<button onClick={decrement}>Decrement</button>
</>
);
}
Run Code Online (Sandbox Code Playgroud)
我可以编写此测试来检查该值不应低于零:
const button = screen.getByRole("button", { name: "Decrement" });
expect(screen.getByText("Value is 1")).toBeInTheDocument();
userEvent.click(button);
expect(await screen.findByText("Value is 0")).toBeInTheDocument();
userEvent.click(button);
// !!! wrong !!!
expect(screen.getByText("Value is 0")).toBeInTheDocument();
expect(screen.queryByText("Value is -1")).not.toBeInTheDocument();
// !!! wrong !!!
Run Code Online (Sandbox Code Playgroud)
但是最后两个断言总是会通过,即使组件有一个错误,这意味着它将异步更新以显示“值是-1”。
处理这种情况的推荐方法是什么?
我想让一台机器上的文件夹与另一台机器上的文件夹同步.这是一个WordPress部署插件,所以我不能依赖于任何一台机器上的rsync或其他命令.PHP和Web服务器将在两台机器上都可用,理想情况下它可以通过HTTP工作.
我目前的想法是请求机器将具有最后修改日期的本地文件列表发布到另一台机器上的脚本.另一台机器与其文件进行比较,并使用修改后的文件进行响应 - 要么单独提取文件列表,要么在响应中内联更改的文件.
不过,如果存在,我宁愿使用现有的解决方案.有任何想法吗?
我有这段代码。我想根据用户的语言环境添加错误消息,但是会抛出错误,如果字段填写不正确,也会引发错误
[缺少“en.login.emailRequiredError”翻译] [缺少“en.login.passRequiredError”翻译]
const schema = yup.object().shape({
email: yup
.string()
.email(i18n.t('login.emailSpellError'))
.required(i18n.t('login.emailRequiredError')),
password: yup
.string()
.matches(/^((?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{6,15})$/i, i18n.t('login.passSpellError'))
.required(i18n.t('login.passRequiredError')),
});
Run Code Online (Sandbox Code Playgroud)
i18n.t('login.passRequiredError') 当我把它放入一个渲染方法来检查它时工作正常,但它不适用于 yup。有什么建议?提前致谢
假设我正在制作一个包装器组件,它只在传入一些子节点时才呈现自身:
const Wrapper = ({children}) => {
if (!children) return null
return <div>{children}</div>
}
Run Code Online (Sandbox Code Playgroud)
问题是它children可能是Fragment包含空值或空值数组。或包含片段的片段包含...
<Wrapper>hey</Wrapper> // renders <div>hey</div>
<Wrapper>{null}</Wrapper> // renders nothing
<Wrapper>{[null]}</Wrapper> // renders <div/>
<Wrapper><React.Fragment>{null}</React.Fragment></Wrapper> // renders <div/>
Run Code Online (Sandbox Code Playgroud)
有没有一种规范的方法来检查所有这些条件?
我正在使用PDO访问PHP中的两个SQLite 3数据库.我想在查询期间通过重命名来切换数据库文件,但是当文件打开时我不能这样做,因为它给出了另一个进程正在使用该文件的错误.我试过关闭持久连接并将句柄设置为null但是都不起作用.
是否真的无法关闭PDO句柄并释放数据库文件上的锁?
在开发过程中,我schema:update经常运行Doctrine的命令来将数据库模式同步到我不断变化的实体定义.一旦我准备提交功能,我想将所有更改汇总到一个我可以提交给git 的迁移类中.
问题是,为了运行,migrations:diff我需要在我开始搞乱之前将数据库模式回滚到其状态schema:update.这样做schema:drop则migrations:migrate是没有好,因为下降的架构不会删除migration_versions表.这意味着我必须进入MySQL并手动删除所有数据库,然后再运行现有的迁移并创建新的迁移.
它有效,但感觉我做错了.有更好的想法吗?
php doctrine database-schema doctrine-orm doctrine-migrations
这个脚本有效:
var page = require('webpage').create();
var html = '<h1>Test</h1><img>'; //works with page.setContent and page.content
//var html = '<h1>Test</h1><img src=".">'; //only works with page.content
page.setContent(html, 'http://github.com');
//page.content = html;
page.render('test.png');
phantom.exit();
Run Code Online (Sandbox Code Playgroud)
但是添加一个src属性img使其无声地失败(page.render返回false并且不生成图像).
设置page.content直接适用于两种情况,但相对URL则不然.加载资源的其他标签也会发生同样的事情link.链接资源是否存在无关紧要.测试1.8.1和1.9.2.
这是一个错误还是我误解了API?
我正面临着几何翻转的问题,我尝试使用负刻度技术翻转,但它失败了.
我可以使用什么技术在特定轴上翻转3d对象?
通过翻转我的意思是对象应该看起来像在镜子上呈现.
如果通过three.js无法实现这一点,我怎样才能使用Blender实现这一目标?
我正在使用 Jest 模拟一个模块,因为它包含不应在测试中运行的代码。不过,我可以从输出模块中的代码中看到的是正在运行。
// foo.js
console.log('Hello')
// test.js
jest.mock('./foo')
const foo = require('./foo')
test.todo('write some tests')
Run Code Online (Sandbox Code Playgroud)
控制台输出
PASS test.js
? todo 1 test
console.log foo.js:1
Hello
Run Code Online (Sandbox Code Playgroud)
那是怎么回事?
WebAssembly 只有四种值类型:
\n\ni32\xe2\x80\x93 32 位整数f32\xe2\x80\x93 32 位浮点数i64\xe2\x80\x93 64 位整数f64\xe2\x80\x93 64 位浮点数每个都有自己的一组表示算术运算的操作码,例如i32.add、和。还有一些操作码用于将较窄的整数包装为较宽的类型,例如,i64.addf32.addf64.addint32.store_8int64.load32_u。WebAssembly v1 定义了约 170 个操作码,其中约 70 个专门用于 32 位数字,约 75 个用于 64 位数字。
在我看来,放弃对 32 位数字的支持几乎可以将操作码的数量减半,而不会损失任何功能。这让我想知道:两者兼有有什么好处?
\n\n\nphp ×3
jestjs ×2
reactjs ×2
32bit-64bit ×1
3d ×1
doctrine ×1
doctrine-orm ×1
html ×1
javascript ×1
localization ×1
mirroring ×1
mocking ×1
node-modules ×1
pdo ×1
phantomjs ×1
react-native ×1
rsync ×1
sqlite ×1
sync ×1
three.js ×1
webassembly ×1
yup ×1