问题标签 [xctestexpectation]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
85 浏览

swift - XCTest 异步函数 Swift

我对 XCTest 很陌生,我在模型、视图、控制器中构建了我的代码

因此控制器将从模型中获取数据,一旦获得数据,控制器将更新视图。所以我有我的控制器和视图如下

控制器:

看法:

这是我的 XCTest

我知道我可以

但我应该把它放在expectation.fulfill()哪里?

任何帮助表示赞赏。谢谢

0 投票
0 回答
46 浏览

objective-c - 如何使用模拟和期望获得嵌套的objective-c异步方法在测试下执行?

这是我的测试

问题是getLimitResultWithCompletion调用另一个异步方法getlimitRecordWithCompletion,如下所示:

当我调试测试时,getlimitRecordWithCompletion中的代码没有被执行。调试器只是跳过它。当然,测试失败。我对期望和测试异步代码不是很熟悉。我还需要做些什么来让这个测试按照我期望的方式执行吗?getlimitRecordWithCompletion正常执行但未在测试中。测试最终超时,expectationLimitResult 永远不会实现。

0 投票
1 回答
658 浏览

swift - XCTestExpectation 和 NSPredicate 的 XCTWaiter().wait 似乎失败了

我正在尝试编写单元测试,我希望我的测试用例等待某个类中的变量发生变化。所以我用一个谓词创建一个期望,并等待值改变 using XCTWaiter().wait(for: [expectation], timeout: 2.0),我认为这是正确的使用方法。

以下代码按预期工作:

变量 (x) 由 start() 函数设置为 0,然后在 0.5 秒后变为 1。谓词等待该 var (x) 更改。这有效:result设置为.completed并且 var 实际上设置为 1。是的:-)

但是,当我要观察的变量不是本地变量,而是在某个类中时,它就不再起作用了。考虑以下代码片段:

它与第一段代码非常相似,但它总是在 2 秒后以 beresult结束.timedOut。我看不出我做错了什么。我使用myClass传递给期望的对象中的变量,而不是本地变量和对象'self'。(当测试结束时,类 varmyClass.y实际上设置为 1。)

我尝试用 替换XCTNSPredicateExpectation(predicate:object)expectation(for:evaluatedWith:handler)但这没有任何区别。

StackOverflow 上的许多示例都使用检查existsin的谓词XCUIElement。但我不是在测试 UI;我只想检查某个类中的某个 var 是否在超时时间内发生了变化。我不明白为什么这与检查 var existsin如此不同XCUIElement

有任何想法吗?!先感谢您!

0 投票
3 回答
404 浏览

ios - 如何测试在 Swift 中异步调度工作的方法

我需要为以下方法编写单元测试

0 投票
0 回答
18 浏览

objective-c - 如何重构 XCTest 期望?

我正在编写带有期望的单元测试,我有一堆它们,它们的结构非常相似,所以我决定重构我的代码,但由于期望的满足而卡住了。也许你能给我一些想法?

带来2个测试示例:

如您所见,只有检查值不同,整个测试非常相似。我可以通过添加新方法以某种方式重构并缩短它们吗?

0 投票
1 回答
86 浏览

ios - API 违规 - 多次调用 -[XCTestExpectation 完成],我该如何解决这个问题

我正在为使用组合框架的代码编写单元测试

我有一个异步操作,所以我expectation(descrption:)用来等待异步操作

这是我的代码示例

我正在尝试检查调用someOtherStream时发出的值handleSomeUserAction

所以我写了这样的测试代码

我知道expectedFulfillmentCount是 1 因为它的默认值是 1

但测试失败,Xcode 向我显示此消息

API 违规 - 多次调用 -[XCTestExpectation 完成]

所以我尝试调试,尽管是 1 ,但我发现expectation.fulfill()调用了两次expectedFulfillmentCount

结果value2不是value1我所期望的

为什么会这样?我认为异步操作(flatMap {...})完成得太快并被fulfill调用了两次。

我尝试了延迟模拟方法,但我认为这不是正确的解决方案