用PHP编写的带有MySQL数据库的Web应用程序.
我有一个系统,可以在分摊成本时为许多人计算不同的成本.例如,人员A购买的东西为10,而人员B,C和D应该分摊成本.
因此,该系统应该记录A人10 的正记录和B,C和D的10/3的负记录.
但是,当这样做时; 四舍五入后B,C和D均为-3.33.这当然并不加起来总数的10什么的要对这个问题的最好方法是什么?一个最优的解决方案是随机化一个人获得的稍微大一点的成本.
一个可能的解决方案是,如果我只是让最后一个人的债务10 - (A + B),但是如果四个人分摊成本例如13.34 则存在问题.那么不同的部分将是3.34,3.34,3.34和3.32,而最佳分割将是3.34,3.34,3.33,3.33.
有些人可能会争辩说,只要有足够的小数,这只是在拥有大量行时的问题.但在一个经济的系统中,我认为从一开始就拥有一个故障安全系统是很重要的.它需要是可扩展的,甚至不会有任何误差.不公平是好的,只是没有错误.
类似的问题:总和分值问题(处理舍入误差)
我有一个 cypress 规范,我想用它来测试我网站上的一个函数,该函数轮询第三方 API,直到它收到正确的答案,然后显示更多信息供用户继续使用该函数。
我开始我的规范
cy.server();
cy.route('GET', '**/that-other-api/**').as('otherApi');
Run Code Online (Sandbox Code Playgroud)
我知道这部分有效。该路由列在 Cypress 测试 GUI 的顶部,我的otherApi别名是在运行时在命令列表中列出的 XHR 请求中附加的。
当用户(或我的测试)单击按钮时,站点将开始轮询该端点。当我status: success在响应中收到 a时,用户(或我的测试)将获得一个完整的选项下拉列表,并且可以继续。
我怎样才能让赛普拉斯等到我从 XHR 请求中得到特定响应(或达到赛普拉斯超时),然后继续前进?
该网络请求的文档没有解释,如果这是可以或不可以。我试过了
cy.wait('@billectaAccounts').should('have.property', 'response.body.status', 'success');
Run Code Online (Sandbox Code Playgroud)
只是为了看看东西是否有效
cy.wait('@billectaAccounts').should('have.property', 'status', 201);
Run Code Online (Sandbox Code Playgroud)
两者都抛出错误:
InvalidStateError:无法从“XMLHttpRequest”读取“responseText”属性:只有当对象的“responseType”为“”或“text”(为“json”)时,才能访问该值。
记录响应
cy.wait('@billectaAccounts').then(console.log);
Run Code Online (Sandbox Code Playgroud)
记录响应并显示我的状态变量在那里,但pending因为它仅在第一个请求中。
{
"xhr": {
"method": "GET",
"url": "https://myapi/longToken",
"id": "xhr193"
},
"id": "xhr193",
"url": "https://myapi/longToken",
"method": "GET",
"status": 200,
"statusMessage": "200 (OK)",
"request": {
"headers": {
"Accept": "application/json, text/plain, */*"
},
"body": null
},
"response": {
"headers": {
"cache-control": …Run Code Online (Sandbox Code Playgroud) 我设置了一个简单的 NextJS 项目,但在让 Jest 识别我的环境变量时遇到问题。我已尽我所能按照https://nextjs.org/docs/basic-features/environment-variables#test-environment-variables上的说明进行操作,但无法使其正常工作。
这是我的问题的简化版本。
// .env.test.local
MY_ENVIRONMENT_VARIABLE=my_value
Run Code Online (Sandbox Code Playgroud)
// .env.test.local
MY_ENVIRONMENT_VARIABLE=my_value
Run Code Online (Sandbox Code Playgroud)
// My function I want to test
export const getEnvironment = () => {
const MY_ENVIRONMENT_VARIABLE = process.env.MY_ENVIRONMENT_VARIABLE;
return MY_ENVIRONMENT_VARIABLE;
};
Run Code Online (Sandbox Code Playgroud)
我在开玩笑jest --watch。我可以看到它得到了 environment test,但没有出现我自己指定的变量。
上面的测试失败了
Expected: "my_value"
Received: undefined
Run Code Online (Sandbox Code Playgroud)
如果有任何其他文件相关,请发表评论,我会添加我所拥有的。