【问题标题】:Testing props that are being passed down to child component测试传递给子组件的道具
【发布时间】:2019-09-17 23:40:27
【问题描述】:

所以我需要帮助来编写测试以正确传递给子组件的道具。

beforeEach(() => {
wrapped = shallow(
    <CommentDetail
        author="Sam"
        timeAgo="Today at 4:45 pm"
        content="nice blog post"

    avatar="https://s3.amazonaws.com/uifaces/faces/twitter/m_kalibry/128.jpg"
    />
);
});

it("renders author's name", () => {
expect(wrapped.find(".author").prop("author")).toEqual("Sam");
});

// snippet from the react file
<a href="/" className="author">
    {author}
</a>

这似乎与我在文档中找到的非常相似,但在测试输出中收到的值中出现了未定义的值。

可以编写另一个测试,但我不确定它是否正确测试了道具:

it("renders author's name", () => {
    expect(wrapped.render().find(".author").text()).toContain("Sam");
});

【问题讨论】:

    标签: reactjs typescript jestjs enzyme


    【解决方案1】:

    不是 100%,但请尝试删除您的 find 方法。 prop 应该显示在组件本身上,而不是任何拥有 .author 类的元素,除非 Author 本身是一个 React 组件,在这种情况下你会想要 find('Author')

    expect(wrapped.prop("author")).toEqual("Sam");
    

    【讨论】:

    • 不,这行不通。另外作者是锚标签上的一个类。我仍然遇到同样的错误。
    • 为什么要将锚标记传递给字符串?这就是链接文本显示的内容吗?在这种情况下,您可以尝试wrapped.find('.author').text()
    • 啊,刚刚看到你的编辑。是的,这肯定会正确测试您的道具,它会验证它是否已成功传输到您的链接文本。
    • 哦,好的,谢谢!这就是您测试正确传递的文本值的方式。 :)
    • 如果您将其用作 HTML 元素的 innerText,则可以对显示它的任何元素执行完全相同的操作。
    猜你喜欢
    • 2018-07-07
    • 1970-01-01
    • 2021-11-10
    • 2021-03-04
    • 1970-01-01
    • 2020-08-20
    • 1970-01-01
    • 2020-09-01
    相关资源
    最近更新 更多