【问题标题】:InterSystems Cache: How to store macro name in a variable then evaluate itInterSystems Cache:如何将宏名称存储在变量中然后对其进行评估
【发布时间】:2020-01-15 16:39:12
【问题描述】:

如何将宏名称存储在变量中,然后再使用它?

例如:

Set myVariable = "AssertEquals"

Do $$$myVariable(...)

Set myVariable = "$$$AssertEquals"

Do myVariable(...)

以为我可以执行以下操作,但这也不起作用(我得到 CLASS DOES NOT EXIST)。

Do $CLASSMETHOD("%UnitTest.TestCase","AssertEqualsViaMacro",....)

【问题讨论】:

    标签: intersystems-cache intersystems intersystems-ensemble intersystems-iris


    【解决方案1】:

    没办法,宏在编译时会消耗掉,但你会在运行时使用它们。我认为你应该更好地解释你实际要达到的目标。如果你问here,你会得到更多的答案。

    【讨论】:

    • 好的,谢谢。只是试图循环通过一组单元测试,其中测试类型(例如 AssertEquals)在表列中定义。
    • 那么,为什么不直接使用这种方式呢? Do $CLASSMETHOD("current testcase class","AssertEqualsViaMacro",....)
    • 当我执行以下操作时出现错误。类 UnitTests.MyTest 扩展 %UnitTest.TestCase { Method TestAdd() { ... ... ... Do $CLASSMETHOD("UnitTests.MyTest","AssertStatusOKViaMacro",tStatus, "Testing....") 查看错误以下。 LogStateStatus:0:TestAdd:ERROR #5002: 缓存错误: zTestAdd+3^UnitTests.MyTest.1 *AssertStatusOKViaMacro,UnitTests.MyTest FAILED跨度>
    • 对不起,应该是$method($this, "AssertEqualsViaMacro", "here some description", ...args)
    猜你喜欢
    • 2017-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-11
    相关资源
    最近更新 更多