gpt4 book ai didi

mvvm - 你会为 Rx.Observable 创建一个服务吗?

转载 作者:行者123 更新时间:2023-12-03 11:00:38 29 4
gpt4 key购买 nike

我在VM中有以下代码..

Observable
.Timer(remainingTimeSpanForNextHour, TimeSpan.FromHours(1))
.Timestamp()
.Subscribe( x => FillBookingData());

我的问题是~
  • 你认为我们需要测试这段代码吗?如果我们打算测试这段代码,会不会像是在尝试测试 Rx?也许。我们应该只测试这个值“remainingTimeSpanForNextHour”
  • 假设我们应该测试这段代码。你认为创建像 IObservableService 这样的服务是个好主意吗?
  • 最佳答案

    测试你的代码总是一个好主意,但是如果你的代码都在一个方法或代码块中,那么使用 observables 可能会有点困难。

    你应该尝试分离出这个查询的组成部分——对我来说有三个组成部分:

  • 参数
  • 可观察
  • 观察员

  • 因此,编写测试以确保您获得正确的参数值。

    然后编写测试以确保您的查询根据一组类似的输入值生成值。我不会编写必须等待一个小时才能到达值的测试,因此将小时更改为秒等。

    然后编写确保观察者工作的测试。

    现在,就写 IObservableService接口(interface)/实现我认为这不是一件好事。相反,我会专注于编写一个或多个服务,以抽象出您在功能基础上尝试做的事情,以便您变得干燥(不要重复自己)。

    所以,我认为 ITimerService可能有用。
    public interface ITimerService
    {
    IDisposable Subscribe(TimeSpan dueTime, TimeSpan period, Action action);
    }

    很明显,它是为配合 Rx 而设计的——签名类似于 Observable.TimerIObservable.Subscribe 交叉.它将使用您现有的查询,只是使用输入参数。

    您应该会发现测试此代码非常容易。

    让我知道这对您来说是否是一个很好的起点。

    关于mvvm - 你会为 Rx.Observable 创建一个服务吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7565104/

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