您的问题不是一个适当的问题,而是一个问题层,有些是基于意见的,有些过于宽泛而无法回答。但是让我们试着分解一下。
所述问题是when I'm developing this application in real mode.... I release updates ... it shows me syntax error... application is down。我会读它,因为主要问题是您正在生产环境中开发。让我们暂时忘记这种做法是多么糟糕,让我们专注于一些有建设性的事情。
让我们定义粗略的步骤。
- 生活环境
最紧迫的问题似乎是您在开发实时应用程序,而在开发期间崩溃它意味着您的用户也会崩溃它。让我们来处理它。
- 立即更改所有访问代码、密钥、用户名和密码,以便将它们存储在环境文件中(加密和备份是安全的,但不能在源代码中提交),例如
environment-prod.env。
- 然后为您使用的所有服务创建第二组凭据。对于 MongoDB,例如这很简单,只需创建一个本地数据库实例,例如 test_database。对于 Reddit,创建第二个应用程序,例如将其命名为 my-app-test。某些服务可能会选择在应用中创建一组 test 凭据,而其他服务则只需一个应用用于测试,一个用于生产。
- 创建一个新的环境文件,例如
test-environment.env,具有所有相同的键(例如 REDDIT_APPID、REDDIT_SECRET、MONGODB_URL、BLOCKCHAIN_GATEWAY_KEY 等),但具有新值。
现在,首先,您有一个测试环境。做一个别名,例如alias dev="cd $HOME/projects/my-reddit-bitcoin-app && source test-environment.env"。每天你来开发应用程序,输入dev,然后你就可以启动pm2等并在开发环境中安全地工作。您的用户永远不会看到您的崩溃。
仅当您确定已完成新功能或错误修复时,切换环境 (source environment-production.env),然后将新应用程序部署到运行它的服务器,然后 pm2 重新启动或用于这些部署的任何内容。在重新处理代码之前立即切换回测试环境。
详细了解如何分离测试/生产环境。阅读一些关于 git 工作流的内容(例如,从最新的 master 分支到 feature-branch 或 bugfix 分支,在测试时,将其合并回来。然后将其标记为“release-”并部署到生产中。然后尽可能自动化所有这些。 )
- 测试
Mocha 非常适合运行 Node/Express 应用程序的测试。重要的是测试。
你说bitcoin payment....Needs request and response。让我们看看如何做到这一点。
- 将 [nock])(https://www.npmjs.com/package/nock) 添加到您的应用 (
npm i -D nock)。
-
导入它并将其放在测试文件的顶部。例如。在 some-test.spec.js 文件的顶部:
const nock = require('nock')
-
开始记录请求,例如将此添加到应用程序的 before() 块中:
describe('My tests', function () {
before(function () {
nock.recorder.rec();
});
// ... tests
-
现在,一次运行一项测试(例如,编写一项测试,从您的应用中执行一项特定任务)并检查控制台中的内容。例如。如果您发出请求 (request.post('http://reddit.com/api/submit', jsonData)),当测试运行时,您将看到 nock 在控制台中打印准确的响应(以 JSON 格式)。将其复制到测试文件中,例如把它放在底部:
var testResponse = <whatever was in the console in json format. Or string, whatever>. // homework is to find out why var and not const, if this is at the end of the file.
-
现在停止记录器(将其注释掉),并在您的实际测试中运行它:
const pipe = nock('http://www.example.com')
.get('/resource')
.reply(200, testResponse);
为您的所有请求执行此操作。
现在您拥有的是一个测试设置,因此当您更改代码时,它不应该针对真正的 Reddit api 或真正的支付网关 api 运行,而是获得您的模拟响应。将它与一些好的断言配对,你应该没问题。确保你嘲笑一切。如果您添加新类型的请求,请务必记录它们,并将它们添加到您的程序中。
现在,这一切都非常模糊。广阔。只是一种方法。漫长的过程。可能不是最好的。不适合您的具体情况。但它应该让你开始。一步一步地拿这些东西,如果你遇到困难,回到 Stackoverflow。但是一定要开始努力,因为从长远来看,您当前的方法似乎是不可持续的。