0

我有一个可以运行的 Node.js Express REST API 应用程序。好的。

我有一个 Mocha/Chai/Supertest 模拟来测试上面的 API 应用程序。好的。

但我必须启动应用程序,然后独立运行模拟测试。

如何运行单个 grunt 命令来启动 API 应用程序,让它启动并运行,然后运行模拟测试?

或者我是否需要以某种测试模式(通过 env var)运行 API 应用程序并让仅测试逻辑以某种方式调用模拟测试?

我可以尝试一些事情并得到一些工作,但什么是好方法?(避免过度使用短语“最佳实践”。)

4

1 回答 1

0

你可以使用 grunt-express-server 和 grunt-mocha-test 来做到这一点,你只需要像下面这样设置你的任务:

grunt.registerTask('test', ['express:test', 'mochaTest']);

这将使用您为测试环境设置的配置运行您的 express 服务器,然后在您运行时运行 mocha grunt test

由于您使用的是 supertest,我想您正在进行功能测试,这意味着您将使用相同的数据库进行开发和测试(如果您没有模拟某些东西)。这可能会浪费时间并使您的测试因数据错误而失败。使用两种不同的环境可确保您在运行测试时的数据状态。

如果您不想手动进行,您仍然可以使用 grunt watch 插件重新启动文件更改测试。

希望这可以帮助

于 2014-10-04T14:59:53.227 回答