我想获取我正在测试的函数的返回值,以进行后续测试。该函数的定义如下:
.graphsdata {
width: 100%;
height: 800px;
overflow: hidden;
}
.graph-div {
min-width: 800px;
min-height: 600px;
overflow: hidden;
}
.graphs-div {
width: 2200px;
min-height: 600px;
overflow: hidden;
}
我可以测试它何时应该抛出:
func apple(banana: Banana) throws -> Cherry { ... }
我可以测试它在不应该发生的情况下不会抛出:
XCTAssertThrowsError(try apple(banana: badBanana), "Didn't throw")
我希望这样做:
XCTAssertNoThrow(try apple(banana: goodBanana), "Did throw")
,然后检查XCTAssertNoThrow(let cherry = try apple(banana: goodBanana), "Did throw")
是我所期望的,但是出现以下错误:cherry
如何从Consecutive statements on a line must be separated by ';'...
测试中获取返回值(在这种情况下为Cherry
类型的对象)?还是我缺少一种更好的方法?
非常感谢
答案 0 :(得分:3)
只需调用该函数,并针对返回值进行断言:
func test_apple_withGoodBanana_shouldReturnBingCherry() throws {
let result = try apple(banana: goodBanana)
XCTAssertEqual(result, .bing)
}
通过将测试方法本身标记为throws
,我们可以调用try
而不使用?
或!
。如果抛出,则测试将失败。
答案 1 :(得分:0)
我正在使用此静态函数:
random.random()
示例:
__next__
答案 2 :(得分:0)
这是我更喜欢的一个;它不会因为抛出意外错误而导致测试停止。它可以让你添加一条消息:
func CheckNoThrow<T>(
_ expression: @autoclosure () throws -> T,
_ message: @autoclosure () -> String = "",
file: StaticString = (#filePath),
line: UInt = #line
) -> T? {
var r: T?
XCTAssertNoThrow(
try { r = try expression() }(), message(), file: file, line: line)
return r
}