在我的应用程序中,我们的设计中有两层:API和操作。单元测试 - 我应该如何测试这种设计?
1. 操作执行代码的“真实”逻辑,例如:验证用户,检索书籍信息,通知用户他的书已被查看。
许多API都可以使用相同的操作。
2. APIs由用户执行:它们接收参数,然后根据API的逻辑执行各种操作。
例如:ViewBookAPI:
class BookApis
{
/**
* authenticateUserOperation, retreiveBookOperation, informUserBookViewOperation
* are injected to this class. (Dependency Injection)
*/
public function viewBookApi($bookId, $accessToken)
{
$internalUserId = $this->authenticateUserOperation($accessToken);
$book = $this->retrieveBookOperation($bookId, $internalUserId);
$this->informUserBookWasViewedOperation($book->getOwnerUserId(), $bookId);
return $book->getContent();
}
}
我应该如何测试这个设计?
1.如果我测试API,那么我将不得不重复使用相同操作的API的相同测试。
2.如果我测试操作,我所要做的就是验证API是否正确使用操作。
但是如果一个错误的对象被注入到API会怎么样?那么没有测试会失败。
非常感谢。
为什么没有评论投票呢? – eitanfar 2014-10-12 05:41:25