gpt4 book ai didi

bdd - 如何在 Behat 中测试文件下载

转载 作者:行者123 更新时间:2023-12-03 09:30:19 26 4
gpt4 key购买 nike

在这个应用程序上开发了这个新的导出功能,我正在尝试使用 Behat/Mink 测试它。
这里的问题是,当我单击导出链接时,页面上的数据会导出到 CSV 并保存在/Downloads 下,但我在页面上看不到任何响应代码或任何内容。

有没有办法导出 CSV 并导航到/Downloads 文件夹以验证文件?

最佳答案

假设您使用的是 Selenium 驱动程序,您可以“单击”链接和 $this->getSession()->wait(30)直到下载完成,然后检查下载文件夹中的文件。

那将是最简单的解决方案。或者,您可以使用代理,例如 BrowserMob , 查看所有请求,然后验证响应代码。但这将是一条非常痛苦的道路。

检查文件是否已下载的最简单方法是使用基本断言定义另一个步骤。

/**
* @Then /^the file ".+" should be downloaded$/
*/
public function assertFileDownloaded($filename)
{
if (!file_exists('/download/dir/' . $filename)) {
throw new Exception();
}
}

当您下载具有相同名称的文件并且浏览器以不同的名称保存它时,这可能会出现问题。作为解决方案,您可以添加 @BeforeScenario Hook 以清除已知文件的列表。

另一个问题是下载目录本身——其他用户/机器可能会有所不同。要解决此问题,您可以在 behat.yml 中传递下载目录。作为上下文构造函数的参数,请阅读 docs为了那个原因。

但最好的方法是将配置传递给指定下载目录的 Selenium,以确保它始终清晰,并且您确切知道要搜索的位置。我不确定如何做到这一点,但来自 quick googling这似乎是可能的。

关于bdd - 如何在 Behat 中测试文件下载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24930276/

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