如何与 Cypress 中的 JSON 配置文件交互

发布于 2025-01-11 11:27:15 字数 576 浏览 0 评论 0原文

我的前端依赖于一个 json 配置文件,该文件包含可以修改页面内容的各种参数。

当测试开始时,我的文件有特定的内容。 我想找到一种方法来编写此文件,但仅适用于当前测试,因此不会为下一个测试留下任何状态。

这是我当前的解决方案,但问题是,如果测试失败,则不会重置文件的原始版本。另一种方法可能是什么?

it('should work a specific way with the given configuration', () => {
    cy.readFile('my-app/parameters.json').then(
      (originalFile) => {
        // Modify the json file however I'd like
        cy.writeFile('my-app/parameters.json', someConfiguration);

        // Test details
      
        cy.writeFile('my-app/parameters.json', originalFile);
      }
    );
  });

My frontend depends of a json configuration file that holds various parameters that can modify the content of the page.

When the test starts, my file has a specific content.
I would like to find a way to write this file but only for the current test so no state is left for the next test.

This is my current solution, but problem is that if tests fail, the original version of the file is not reset. What could be another approach ?

it('should work a specific way with the given configuration', () => {
    cy.readFile('my-app/parameters.json').then(
      (originalFile) => {
        // Modify the json file however I'd like
        cy.writeFile('my-app/parameters.json', someConfiguration);

        // Test details
      
        cy.writeFile('my-app/parameters.json', originalFile);
      }
    );
  });

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

思慕 2025-01-18 11:27:15

您所做的事情并没有什么问题(就像重置数据库一样)。

但也许对原始名称使用不同的名称?

it('should work a specific way with the given configuration', () => {
    cy.readFile('defaultParameters.json').then(
      (originalFile) => {
        // Modify the json file however I'd like
        cy.writeFile('parameters.json', someConfiguration);

        // Test details
      }
    );
  });

请记住,当测试中途失败时,您可能不会写回原始内容。

将 cy.readFile('defaultParameters.json') 移至 cy.fixture('defaultParameters.json'),因为 Cypress 会缓存夹具读取。

请参阅fixture - 仅加载一次

请记住,假设夹具文件在测试期间保持不变,因此测试运行程序仅加载它们一次。即使您覆盖夹具文件本身,已加载的夹具数据仍然保持不变。

如果您希望在测试期间动态更改文件的内容,请考虑使用 cy.readFile()。

There's nothing really wrong with what you're doing (it's like resetting a database).

But perhaps use a different name for the original?

it('should work a specific way with the given configuration', () => {
    cy.readFile('defaultParameters.json').then(
      (originalFile) => {
        // Modify the json file however I'd like
        cy.writeFile('parameters.json', someConfiguration);

        // Test details
      }
    );
  });

Keep in mind when the test fails mid way you might not write the original back.

Move cy.readFile('defaultParameters.json') to cy.fixture('defaultParameters.json') since Cypress caches the fixture read.

See fixture - Loaded just once

Please keep in mind that fixture files are assumed to be unchanged during the test, and thus the Test Runner loads them just once. Even if you overwrite the fixture file itself, the already loaded fixture data remains the same.

If you wish to dynamically change the contents of a file during your tests, consider cy.readFile() instead.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文