【发布时间】:2018-06-27 17:35:51
【问题描述】:
单元测试应该只测试一个函数的逻辑,并且应该“模拟”该函数中使用的数据。我想知道我们如何将以下功能与“模拟”数据结合起来?或者即使它是正确的方法。函数签名是
public String doSomething(int firstId, int secondId, int count){
//this function looks in a table e.g. C which has foreign keys from table A, and B
//if firstId and secondId exist in db table C return "already-exists"
//if count < a_column_value_in_table_C return "not-allow"
// else return "success"
}
firstId 和 secondId 是两个不同表的外键。现在,我们如何对这个函数进行单元测试:
1. 应该如何设计单元测试,以便能够在函数中测试 3 个 scnarios
2. 我们如何为这个单元测试准备数据,因为它需要来自两个不同表的外键。
【问题讨论】:
-
"
//this function looks in a table e.g. C..." - 这个函数是如何做到的?我会假设通过一些 JDBC 层,例如CRUD 存储库?如果是这样:模拟并注入这一层 --- “... 所以它能够测试 3 个 scnarios ...” - 三个场景,三个不同的测试,三个不同的模拟。 -
嗨@Turing85 目前测试类正在使用“真实”存储库,使用模拟存储库是有意义的,我仍然不完全理解这是如何工作的,但我会研究它但是您的方法使用模拟 crud depos 是有意义的
标签: java unit-testing tdd