gpt4 book ai didi

mvvm - 在 View 模型上测试RACCommand

转载 作者:行者123 更新时间:2023-12-04 04:17:47 24 4
gpt4 key购买 nike

我正在尝试测试在我的 View 模型上执行的RACCommand的结果。

我将提交命令设置如下:

- (void) createSubmitCommand
{
@weakify(self);
self.submitCommand = [RACCommand commandWithCanExecuteSignal: [self validSignal]];
self.submitSignal = [self.submitCommand
addSignalBlock:^RACSignal *(id value) {
@strongify(self);
return [self save];
}];
}

- (RACSignal *) save
{
RACSubject *saveSubject = [RACSubject subject];

[self.model.managedObjectContext MR_saveOnlySelfWithCompletion:^(BOOL success, NSError *error) {
if (!success)
{
[saveSubject sendError: error];
}
else
{
[saveSubject sendNext: nil];
[saveSubject sendCompleted];
}
}];

return saveSubject;
}

当我初始化 View 模型并且validSignal在测试上下文中有效时,将调用createSubmitCommand。

我正在使用MagicalRecord进行核心数据持久化,并使用Kiwi进行测试。我需要测试当我调用[[viewModel SubmitCommand] execute:nil]时是否保存了我的模型。

我的测试看起来像这样:
__block NSArray *models = nil;
[[vm submitSignal] subscribeNext:^(id x) {
models = [Model MR_findAll];
}];

[[vm submitCommand] execute: nil];

[[expectFutureValue(models) should] haveCountOf: 2];

问题是保存是异步的并且不会阻塞,然后测试完成并拆除我的NSManagedObjectContext,并且测试失败。
我觉得我的测试完全错误,或者我滥用RACCommand,但我不知道该...

最佳答案

原来这是我的愚蠢。我对该测试的期望应该是:

[[expectFutureValue(models) shouldEventually] haveCountOf: 2];

猕猴桃似乎坚持不懈,现在等待结果。

关于mvvm - 在 View 模型上测试RACCommand,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17133374/

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