mvc 架构项目各层如何 mock
最近在用 go 写一个 web 项目,采用 mvc 结构,现在要为该项目mvc 的每一层增加单元测试,这意味着我需要 mock 层间依赖,比如说 UserService 依赖并持有一个 UserRepository 对象,现在为了测试 UserService 的方法,我需要将其内部的 UserRepository 对象替换成 Mock 对象,而这意味着我需要为 UserRepository 创建一个接口 UserRepositoryInterface,然后 UserService 转而依赖该接口,这样我就能在测试时注入 MockUserRepository。
令我感到困惑的是:Go Code Review Comments 中说,不要为了 mock 而专门定义结构,如果像上面那样做,我岂不是违反了这个规则?
但这个规定看起来和我现在遇到的情况相违背呀。像 UserRepository 这样的结构体所拥有的方法只会被 UserService 使用,所以不存在什么根据需要创建接口的情况,我的需要就是为 UserRepository 创建一个大接口。
我想请教的是,对这种 mvc 结构的项目,应该如何 mock?
推荐文章: