【发布时间】:2015-03-09 08:09:33
【问题描述】:
我开始使用 Behat,我在想什么是做这样的事情的正确方法:
我正在使用 Behat(域,而不是 Web)测试系统行为,并且我想测试使用 UserService 类的行为。 UserService 将 UserRepository(接口)作为参数。我应该在上下文中创建 UserService 对象还是应该从某个依赖注入容器中获取它(我目前没有,因为我想先对域进行建模)?或者我应该创建一个工厂来构建用户服务?我应该模拟这些依赖项吗?
这里的问题是,UserRepository 可能有多个实现,我想测试系统使用的那个(因此从 DI 容器中获取 UserService)。在编写功能文件/上下文时,我不知道我将使用哪个实现。可能只是一些虚拟的 FilesystemUserRepository 只是为了通过测试。
如果我在上下文中使用 FilesystemUserRepository,那么在我决定在开发后期迁移到 DatabaseUserRepository 之后,我将不得不重写所有使用 UserService 类的上下文。
是否有一些最佳实践来做到这一点?
【问题讨论】: