gpt4 book ai didi

ruby-on-rails - 从我的应用程序代码中获取数据并进入我的 rspec 测试

转载 作者:数据小太阳 更新时间:2023-10-29 08:46:03 26 4
gpt4 key购买 nike

我不确定如何在 rspec 中进行这种测试,或者是否可能。

我的具体情况是关于电子邮件确认:

1) user#save 方法使用SecureRandom 生成一个字节串(电子邮件确认码),对其进行加密,并将结果存储在数据库中。原始随机代码(未散列)也通过电子邮件发送给用户。

2) 我的 user#confirm_email 方法接受电子邮件确认代码并使用 BCrypt 对其进行哈希处理并将其与数据库中的现有哈希进行比较。'

一切正常,但我不清楚如何测试场景,因为 #confirm_email 的输入是随机的,在 #save 中创建,并且没有存储在任何地方我的测试可以访问。

除了方法返回值之外,我的代码是否有一种干净的方式将信息传递给我的测试?我考虑过将代码存储在一个临时文件中,然后从测试中读取该文件,但我很好奇是否有更好的方法。

最佳答案

Mocking 将代码中的方法替换为测试中的方法。这正是您要执行的操作。

使用 rspec mocking framework例如,您可以在测试中编写:

allow(SecureRandom).to receive(:random_bytes).and_return("My Test String")

然后将相同的输入字符串用于您的#confirm_email 代码。假设您没有进行集成测试。

为了仅测试 #confirm_email 方法,您可以先使用已知字节串在数据库中创建记录以创建加密数据。

关于ruby-on-rails - 从我的应用程序代码中获取数据并进入我的 rspec 测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28267438/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com