因此,我已经看到很多与此主题相关的问题(1),但是我不愿意执行那里提供的答案。例如,在beforeAll()
中进行重置或运行grunt
任务等。
说,我有一个规范文件,其中包含25个测试,其中任何一个测试都可以修改数据库状态,从而使下一个测试可能失败。我的API
中有一个测试端点,具有更高的特权级别,我正在使用它们来重置各个测试中所做的更改。问题是,如果任何测试都抛出任何异常,则重置数据库状态的代码将无法运行。
因此,我决定有一个变量:databaseChanges
,它将存储有关通过测试进行的任何数据库更改的信息。因此,每当要通过测试进行任何数据库更改时,我都会在进行更改之前更新databaseChanges
变量。我使用此变量来恢复afterEach()
中的数据状态,并在databaseChanges
中重置此beforeEach()
。
问题:
我面临的问题是我想验证这些更改是否成功。当我在expect()
中使用afterEach()
语句时,它会抛出错误,并显示类似èxpect() not allowed outside it(), or a timeout occurred....
之类的消息,因此我相信{{1 }},还是可以?还是我可以在expect()
内运行afterEach()
的某种方式,但是当然这看起来像是一个无限循环。
it()
等,以及afterEach()
中的数据库已成功更新。答案 0 :(得分:0)
这是我组织测试的方式,这可能不是最好的方法,但对我有用。第一个测试创建对象,然后进行将对该对象进行操作的测试,最后一个测试删除创建的对象。 另一种方法是创建要放置在BeforeAll中的对象,然后在AfterAll中删除。