【发布时间】:2019-01-23 06:44:21
【问题描述】:
现在我已经对我的业务逻辑与 REST Api 层分开进行了单元测试。
在集成测试中,我已经针对它的 api 测试了服务本身。
当然,集成测试不包括单元测试包括的所有边缘情况。感觉就像是矫枉过正和重复的测试代码。
但事实上,我还剩下一整层没有被覆盖。我不能确定返回值是否按预期序列化,错误代码是否正确,或者参数是否按我的意愿反序列化。
我的问题是,我应该放弃通过实现它们的对象来测试业务逻辑,而是通过服务进行测试,以便在不重复工作的情况下合并所有案例吗?
注意事项:
- 我并不是说要放弃所有的单元测试。不直接接触 API 层的足够复杂的单元仍应单独测试。
- 测试运行时在这里不是问题。
更新
添加了一些示例伪代码以澄清
class Book:
id: int
title: string
class BookRepository:
add_book(book: Book) -> Book
remove_book(id: int) -> bool
all() -> List[Book]
class BookApi:
repository = BookRepository()
@route('/api/books')
get() -> List[Book]
@route('/api/books/id', method=POST)
add(request_body) -> bool :
book = parse_book_from_request(request_body)
return repository.add(book)
@route('/api/books/id', method=DELETE)
delete() -> bool
【问题讨论】:
-
您能否提供一些代码示例,用于这两个部分(业务代码和 REST Api)?
-
@DirkHerrmann 我添加了一个简单的示例来说明分离。我希望很清楚。 Api 负责解析请求,然后发生业务逻辑
标签: unit-testing testing