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?
推荐文章: