问题标签 [model-based-testing]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
338 浏览

cypress - 如何在赛普拉斯无限期延迟拦截的路线?

问题

我正在尝试使用 Cypress 进行基于模型的测试方法。这意味着所有测试用例都是从提供的“状态”和“事件”动态生成的。状态正在正确检查并且 DOM 事件按预期触发,但我无法拦截网络请求。我需要做什么:

  1. 在我转到页面之前设置请求拦截,因为第一个请求是在页面加载后立即开始的
  2. 等待模型使用适当的响应数据执行事件
  3. 在事件执行期间,向请求提供响应数据并“取消暂停”它。

我试过的

我认为如果你只是打电话cy.intercept,请求将暂停,直到其他cy.interceptreply()continue()将被调用。我拦截了所有路由beforeAll并尝试了它,但请求只是按照它的自然请求生命周期进行。

我的第二次尝试是从拦截处理程序返回 Promise。文档指出“如果处理程序返回了 Promise,请等待 Promise 解决。”。但是,当我req.reply在解决此承诺之前调用时,赛普拉斯抛出错误:“req.reply()在请求处理程序完成执行后调用,但在请求完成req.reply()后无法调用。”

有没有办法完全暂停所有拦截的请求并在需要时使用我需要的状态、正文和标头解决它们?

代码

更新

我终于设法让它几乎按照我的意愿工作,但仍然没有找到我需要的东西。

根据Tim Deschryver 的使用 XState 和 Cypress 生成的测试文章,我摆脱了测试中的所有承诺,它开始工作得更好一些,更像我所期待的。

接下来要做的是将beforeEach调用移动到测试套件中,并根据当前路径段内的事件拦截所有请求。我route向事件添加了键以指示应该拦截该事件,然后添加必须拦截它的响应主体。它看起来像这样(仅相关代码):

在我正在处理的应用程序中,有一些更复杂的设置,但这就是使它起作用的原因。之后我必须为每条路由添加默认存根,因为Unexpected token < in JSON at position 0当非存根路由失败时我会得到其他方式。这将有效地使测试失败(这本身就很好)。在我添加默认存根之后,我必须添加我计划稍后正确执行的初始错误处理,因为当赛普拉斯在请求中间重新加载页面时,我现在得到AbortError.

不确定暂停请求是否有助于解决错误(可能不会),但我仍然不喜欢我必须深入研究内部path,解析它的段和事件以查找路由并预先存根它们。一旦我从自己的代码(在事件 exec 函数中)获得此响应,我宁愿暂停一切并以适当的响应解决。

0 投票
1 回答
61 浏览

javascript - 使用@xstate/test “缺少事件配置”

我正在使用基于模型的测试使用@xstate/testand来测试状态机@testing-library/react

基本上,我正在测试这台机器:

然后我正在配置模型,并使用const testPlans = itemDamagedModel.getSimplePathPlans();.

通过大约 200 个通过测试,一切似乎都运行顺利,但我遇到了一些问题:

  • 对于我的每个测试和每个事件,我都会收到警告Missing config for event "VALIDATE"。我不明白它应该是什么意思。
  • 即使我在模型活动中故意打错字,我的所有测试都会得到验证。有时测试的数量会减少,但我希望在模型找不到特定输入或按钮时看到一些警告。
  • 测试都通过了,即使我将一个空的 div 作为我的 xstate/test 渲染组件传递。
0 投票
0 回答
17 浏览

scala - 基于模型的 spark/scala 数据管道测试

有没有人尝试过基于模型的测试来为基于 Spark/Scala 的数据管道编写集成测试?

我的数据管道做一些基本的事情——提取输入数据、转换和少数分组计算,将输出数据加载到 AWS S3。

任何参考文档或示例都非常有助于在 ETL 管道的数据帧/数据集上应用基于模型的测试。

谢谢, 里沙布