gpt4 book ai didi

unit-testing - 为什么我的 ViewModel 不应该依赖于服务的具体实现?

转载 作者:行者123 更新时间:2023-12-03 10:21:31 25 4
gpt4 key购买 nike

我的 ViewModel 通常通过接口(interface)依赖于某些服务(DI 容器将注入(inject)实际的实现)。这样我就可以为 UnitTests 创建这些服务的模拟行为。

public class MyViewModel 
{
public MyViewModel(IMyService myService)
{
}
}

但是我们存在一些模拟框架,例如 Moq ,即使没有接口(interface),您也可以在其中为服务的具体实现设置模拟行为。 这是否意味着 ViewModel 可以依赖于具体的服务类而不是接口(interface)? 除了 UnitTests 接口(interface)还有其他用途吗?

最佳答案

But we have some mocking framework exists like Moq, where you can setup mock behavior for your concrete implementations of services even without interfaces



不完全是。使用 Moq,您只能模拟可以覆盖/实现的东西。在大多数情况下,这将是一个接口(interface),但有时是一个具有虚拟/抽象方法的类。

现在,如果您的服务将方法公开为虚拟方法(问题是,他们为什么要这样做?)那么当然,您可以使用 Moq 并能够模拟它们。否则不行。

传递接口(interface)的重点是依赖抽象而不是具体实现。这是 电话 SOLID原则 - Dependency Inversion Principle .

关于unit-testing - 为什么我的 ViewModel 不应该依赖于服务的具体实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28431362/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com