gpt4 book ai didi

groovy - 在类的所有实例方法中隐式使用 Groovy Category

转载 作者:行者123 更新时间:2023-12-03 23:48:24 25 4
gpt4 key购买 nike

我有简单的 Groovy 类别类,它向 String 实例添加方法:

final class SampleCategory {

static String withBraces(String self) {
"($self)"
}

}

我想在我的单元测试中使用这个类别(例如)。它看起来像这样:
class MyTest {
@Test
void shouldDoThis() {
use (SampleCategory) {
assert 'this'.withBraces() == '(this)'
}
}

@Test
void shouldDoThat() {
use (SampleCategory) {
assert 'that'.withBraces() == '(that)'
}
}
}

然而,我想要实现的是能够指定该类别 SampleCategory用于 MyTest 的每个实例方法的范围内所以我不必指定 use(SampleCategory) { ... }在每种方法中。

是否可以?

最佳答案

您可以使用 mixin 将类别直接应用于 String 的元类。为元类分配 null 以将其重置为常规默认值。例如:

@Before void setUp() { 
String.mixin(SampleCategory)
}

@After void tearDown() {
String.metaClass = null
}

@Test
void shouldDoThat() {
assert 'that'.withBraces() == '(that)'
}

关于groovy - 在类的所有实例方法中隐式使用 Groovy Category,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5552180/

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