【问题标题】:Reload window on every jasmine spec in teaspoon重新加载茶匙中每个茉莉花规格的窗口
【发布时间】:2020-04-10 13:52:07
【问题描述】:

使用茶匙和茉莉花来测试一些 JS。 js 将东西放在“窗口”中。

有没有办法为每个规范完全重新加载页面,以便重新初始化这个“窗口”。

【问题讨论】:

    标签: javascript ruby-on-rails jasmine teaspoon


    【解决方案1】:

    我不确定重新加载浏览器是否是个好主意。您可能会遇到Some of your tests did a full page reload jasmine 错误,它可能会使您的测试变慢。我要做的是利用beforeEachbeforeAllafterEachafterAll 钩子。

    beforeEachdescribe 块中的每个 it 测试之前运行一次,beforeAlldescribe 块内的所有 it 测试之前运行一次。

    您可以做的是利用这些钩子,适当地在窗口中添加和删除东西,并在每次测试(可能是afterEachafterAll)钩子后进行清理。

    【讨论】:

    • 添加的不是我。页面已加载。显示一个按钮。一个 js 库将自己附加到按钮上。这个 js 库是 gcc 编译的,我们无法访问它的任何 api。这个图书馆是我们的图书馆。它将自己附加到准备好的文档上。当按下按钮时,它会将东西放在窗口中。在下一次测试中,我们仍然在同一个窗口中。我们不能在 beforeAll 和 beforeEach 中调用任何东西。实际上它有点困难,因为它还加载了其他东西等等,所以我正在简化。我只需要为这个特定的测试再次加载文档。
    • 我不确定这是否可行,但在 beforeAllbeforeEach 的某处放置一个名为 oldWindow = window; 的变量的句柄,其中 oldWindow 将是未添加属性的 window。然后在添加属性后,您可以使用window = oldWindow; 删除它们。也许你必须以Object.assign 的方式来做,但是像这样。
    • 但是在 beforeAll 之前调用了准备好的文档,并且 beforeEach 和我无法引用旧窗口。
    猜你喜欢
    • 1970-01-01
    • 2018-08-27
    • 2017-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-12
    • 1970-01-01
    相关资源
    最近更新 更多