正确测试gem的方法

如果gem有rails依赖项,你认为以一种可以独立运行或在rails项目下运行它们的方式编写gem测试更好吗?

gem应该是一段独立行为的代码。 否则它是应用程序的一部分,因此测试也应该独立创建。 通过这种方式,其他人(假设)也可以执行测试。 如果测试取决于您的应用程序,则其他人无法测试您的gem。

此外,当您想要测试您的gem时,它不会因为您的应用程序失败而失败。 在gem通过测试后,您可以测试应用程序,知道您的gem运行良好(假设您测试了所有内容)。

gem是否依赖于Rails不是问题,因为Rails也已经过测试(你可以假设它正常工作)。 所以这些依赖关系不会(/应该)影响你的gem。

我会说这取决于gem需要的依赖类型。 例如。 如果它只是ActiveRecord,那么很容易将它包含在您的测试套件中。 在更复杂的情况下,您总是可以模拟一些所需的function。 在非常复杂的情况下,创建测试应用程序总比没有好(IMO)。