Javascript 使用酶将重复动作作为道具传递

Javascript 使用酶将重复动作作为道具传递,javascript,reactjs,unit-testing,redux,enzyme,Javascript,Reactjs,Unit Testing,Redux,Enzyme,我应该如何在酶测试中使用道具将重复操作传递给组件 这就是我现在所拥有的,它似乎不能正常工作 import Flag from "./Flag"; import FlagImage from "./FlagImage"; import * as actions from "../../actions/auth"; test("Flag changes the language after click", () => { const flag = shallow(<Flag aut

我应该如何在酶测试中使用道具将重复操作传递给组件

这就是我现在所拥有的,它似乎不能正常工作

import Flag from "./Flag";
import FlagImage from "./FlagImage";
import * as actions from "../../actions/auth";

test("Flag changes the language after click", () => {
  const flag = shallow(<Flag authActions={actions} />);

  flag.find(".flag2").simulate("click");
  flag
    .findWhere(FlagImage => !FlagImage.prop("big") && FlagImage.prop("name") === "DE")
    .parent()
    .simulate("click");

  expect(flag.state().open).toEqual(false);
  expect(flag.find(FlagImage).prop("name")).toEqual("DE") ;
从“/Flag”导入标志;
从“/FlagImage”导入FlagImage;
从“../../actions/auth”导入*作为操作;
测试(“单击后标志更改语言”,()=>{
常量标志=浅();
flag.find(“.flag2”).simulate(“单击”);
旗帜
.findWhere(FlagImage=>!FlagImage.prop(“大”)和&FlagImage.prop(“名称”)==“DE”)
.parent()
.模拟(“点击”);
expect(flag.state().open).toEqual(false);
expect(flag.find(FlagImage.prop(“name”)).toEqual(“DE”);

第二个expect()返回US,这是默认值,因此操作不会被触发。第一个expect()会通过,这意味着该标志实际上已被单击。

Redux操作通常是“已连接的”在redux的
mapDispatchToProps
中连接装修器,或通过redux钩子在内部使用。很难说您的问题是否与redux有关。您在调试过程中做了什么?浅层安装是否实际呈现
FlagImage
?我怀疑没有。请尝试
控制台.log(flag.debug())
查看包装器的实际功能。使用
console.log(flag.debug())
根本不记录任何内容…关于呈现FlagImage,我不太确定,但这是文档中的方式。这很愚蠢,但控制台日志在测试时似乎是异步的,因此如果在输出刷新到屏幕之前测试完成,则有时不显示输出。在这些情况下,我会复制3-5个控制台日志,因此可能会显示其中一个。浅装载不会呈现子项,因此它取决于您的
标志
组件结构。