limikael / blockchainwalletmock
模拟区块链.info钱包API进行测试...
Requires
- youngj/httpserver: ^1.0
Requires (Dev)
- phpunit/phpunit: 4.7.*
README
为自动化测试模拟区块链.info钱包API。
关于
这是区块链.info API的模拟版本,使用本地数据库存储交易。钱包中不会有比特币的转移,也不会产生涉及真实货币的费用。由于我们处理的是金融软件,编写测试代码是个好习惯。为了做到这一点,我们可以使用这个工具来检查我们是否正确处理了响应和回调。
入门指南
首先,使用以下命令安装:
composer global require blockchainwalletmock
然后运行以下命令:
blockchainwalletmock --port 8888
启动后,我们可以看到它已经启动,如下所示:
curl "https://:8888/list?password=testpassword"
它应该给我们以下结果
{ "addresses":[ ] }
JSON以纯文本形式输出,这里已格式化以提高可读性。我们可以以与使用blockchain.info API相同的方式创建新地址。
curl "https://:8888/new_address?password=testpassword"
{ "address": "075bd7684e782dca00007f01b24c34c0" }
现在我们来模拟一个收入支付
curl "https://:8888/debug_incoming?password=testpassword&address=075bd7684e782dca00007f01b24c34c0&amount=100000000"
{ "message":"ok" }
让我们再次列出我们的地址
curl "https://:8888/list?password=testpassword"
{ "addresses":[ { "address":"075bd7684e782dca00007f01b24c34c0", "balance":"100000000", "total_received":"100000000" } ] }
你明白了。
这样我们可以在部署前测试我们的代码,同时还可以使用例如PHPUnit创建单元测试,而无需担心我们的比特币会发生什么。
配置
我们可以设置各种配置选项,例如应接受的最小交易金额。我们还可以以与区块链.info“账户设置”相同的方式设置回调URL,并且此URL将以相同的参数调用。运行blockchainwalletmock而不带参数以查看可用选项列表。
在测试中启动
API
目标是API应遵循https://blockchain.info/api/blockchain_wallet_api,但目前并不是100%完整。到目前为止,我只实现了我自己的目的所需的内容。如果缺少某些功能,请告诉我,我可能会感兴趣添加您需要的功能,或者您可以自由贡献... :)
地址和交易哈希的ID不是真实比特币地址,而是随机MD5散列。这是故意的,以免与真实比特币地址混淆。
除了文档化的功能之外,还有一些以debug_
为前缀的特殊功能,我们可以用于调试。
/debug_incoming?address=$address&amount=$amount
- address 应接收收入支付的地址。
- amount 要添加到地址余额的金额。
模拟一个收入交易。如果我们已注册回调,它将以与使用blockchain.info API相同的方式被调用。
debug_confirmation?address=$address&transaction=$transaction&confirmations=$confirmations
- address 可选。 应接收所有交易确认的地址。
- transaction 可选。 应接收确认的交易哈希。
- confirmations 可选。 要添加的确认数。
模拟一个或多个确认。地址和交易哈希都是可选的,在这种情况下,所有交易都将收到确认。
/debug_clear
清除数据库中的所有数据。