首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Regex的Mockrunner(Java)查询

使用Regex的Mockrunner(Java)查询
EN

Stack Overflow用户
提问于 2015-11-17 05:46:11
回答 1查看 105关注 0票数 0

我正在使用Mockrunner来模拟单元测试中的Sql。以下是我的查询:

代码语言:javascript
复制
"select * from table where userId in (" + userIds + ")"

现在,我的userIds是状态依赖的。我不需要我的测试用例依赖于列表- userIds中的安排。所以我不需要精确匹配而是正则匹配。我已经通过以下代码启用regex匹配:

代码语言:javascript
复制
    StatementResultSetHandler statementHandler = connection.getStatementResultSetHandler();
    usersResult = statementHandler.createResultSet("users");
    statementHandler.setUseRegularExpressions(true);
    //How to write this regex query?
    statementHandler.prepareResultSet("select * from table where userId in .*", campaignsResult); 

但是如前所述,我不知道Mockrunner支持的regex语法。

编辑:我无法将像"Select * from tables"这样的查询与"Select * from tab .*"匹配。所以它必须用我使用regex和Mockrunner的方式来做一些事情

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-17 06:42:01

有一些有用的例子,可在这里找到。例如:

代码语言:javascript
复制
public void testCorrectSQL() throws Exception {
    MockResultSet result = getStatementResultSetHandler().createResultSet();
    getStatementResultSetHandler().prepareResultSet("select.*isbn,.*quantity.*", result);
    List orderList = new ArrayList();
    orderList.add("1234567890");
    orderList.add("1111111111");
    Bookstore.order(getJDBCMockObjectFactory().getMockConnection(), orderList);
    verifySQLStatementExecuted("select.*isbn,.*quantity.*\\(isbn='1234567890'.*or.*isbn='1111111111'\\)");
}

由此,我推测它使用的是标准Java regex语法。在这种情况下,您可能希望:

代码语言:javascript
复制
prepareResultSet("select \\* from table where userId in \\(.*\\)", campaignsResult);

...or可能更简洁(并且取决于您的测试所需的细粒度):

代码语言:javascript
复制
prepareResultSet("select .* from table where userId in .*", campaignsResult);

在启用regex匹配时要注意的主要注意事项是,在查询中所需的任何文字特殊字符(如*()文本)都需要在regex中转义才能正常工作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33749986

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档