1

我正在尝试为我们网站的一部分编写一些集成测试,该部分使用存储过程而不是通过 EF 运行。

我们只想确保我们从存储过程中返回的数据实际上是正确的,并且与我们的代码正确集成。

我们对集成测试的基本设置是我们在事务范围内进行所有这些测试,因此过程是:

  1. 擦除相关表中的数据
  2. 插入适当的测试数据
  3. 运行我们的存储过程
  4. 断言结果

我们正在测试的部分存储过程在表的全文目录上运行,其中一部分只是查询表。

对于不使用全文索引的存储过程部分,这一切都运行良好,但对于使用全文索引的部分,我得到了一些有趣的结果。

如果我没有在测试之前手动清除数据(即通过 sql server explorer),因为我们的模拟数据与我们的种子数据非常相似,测试都通过了。

但是,如果我先手动清除数据,那么它基本上是从一个空的全文目录开始的,测试都失败了。我认为全文索引可能在测试中没有被正确清除,但是在我的存储过程运行之前它也没有被填充。我已经尝试添加一个等待(在两个代码中,也类似于这个stackoverflow帖子:我怎么知道SQL全文索引填充何时完成?)但似乎都不允许首先填充全文索引。

我对全文索引的了解并不多,所以我不确定这是我正在做的方式,还是它在事务范围内的事实,或者我做错了什么。

有趣的是,如果我不在事务范围内运行它一次(因此它填充数据库)然后第二次运行它就会通过,所以我知道如果全文目录在那里/工作测试将起作用。

有人有什么想法吗?如果需要,我很乐意发布部分代码。

谢谢,医学博士

4

0 回答 0