小编jhe*_*cks的帖子

JSONPath表达式,用于在条件或第一个值上从数组中获取值

给定JSON结构如下:

{
   "name":"Some Guy",
   "emails":[
      {
         "description":"primary",
         "status":"UNVERIFIED",
         "email":"first@first-email.com"
      },
      {
         "description":"home",
         "status":"VERIFIED",
         "email":"second@second-email.com"
      },
      {
         "description":"away",
         "status":"VERIFIED",
         "email":"third@third-email.com"
      }
   ]
}
Run Code Online (Sandbox Code Playgroud)

我想要一个JSONPath表达式来获取第一封带有状态的电子邮件,VERIFIED如果没有,那么只需获取数组中的第一封电子邮件.因此,鉴于上面的例子,结果将是second@second-email.com.鉴于这个例子:

{
   "name":"Some Guy",
   "emails":[
      {
         "description":"primary",
         "status":"UNVERIFIED",
         "email":"first@first-email.com"
      },
      {
         "description":"home",
         "status":"UNVERIFIED",
         "email":"second@second-email.com"
      }
   ]
}
Run Code Online (Sandbox Code Playgroud)

结果将是first@first-email.com.

这是否可以使用JSONPath表达式?

json jsonpath

6
推荐指数
1
解决办法
2万
查看次数

MySQL存储过程在同一连接上的第二次调用失败,"SELECT命令被拒绝给用户'用户'@'localhost'用于表'view_name'

我有一个名为sales_observation_daily_summary的表,它是sales_observation_daily_summary_view的物化视图.我已经定义了一个名为sync_daily_summary_view_with_table的存储过程,它将刷新物化视图.从功能上讲,它完全符合我的预期.但是,在同一连接上调用存储过程两次时有一个奇怪的错误(使用连接池时可能出现这种情况).最初这出现在我的Java集成测试中,但我能够轻松地在MySQL Workbench上重现它,所以它不应该与JDBC或Spring或中间的任何东西有关.

call sync_daily_summary_view_with_table();
call sync_daily_summary_view_with_table();
Run Code Online (Sandbox Code Playgroud)

在第一次调用时,它会执行它应该执行的操作并正常返回.在第二个电话中,我得到:

Error Code: 1142
SELECT command denied to user 'test'@'localhost' for table 'one_pg_someone_sales_observation_daily_summary_view'
Run Code Online (Sandbox Code Playgroud)

one_pg_someone_sales_observation_daily_summary_view在sales_observation_daily_summary_view,这是在存储过程中引用的引用.错误消息没有任何意义,首先,存储过程在第一次运行时没有对象,其次,该用户有足够的权限在该视图上进行选择.

我不会显示所涉及的所有视图,因为它非常复杂,但sales_observation_daily_summary_view被定义为其他几个视图的并集,因此:

CREATE ALGORITHM=UNDEFINED DEFINER=`test`@`localhost` 
SQL SECURITY DEFINER 
VIEW `sales_observation_daily_summary_view` AS
        /* Specific Stage and Observer */
        SELECT zone,
               session_date,
               session_year,
               session_month,
               session_week,
               phenomenon_group_id,
               phenomenon_group_name,
               stage_id,
               stage_name,
               observer_id,
               series_name,
               benchmark_id,
               session_count,
               session_value,
               benchmark_value
        FROM   one_pg_someone_sales_observation_daily_summary_view
        UNION ALL /* All Stages */
        SELECT zone,
               session_date,
               session_year,
               session_month,
               session_week,
               phenomenon_group_id,
               phenomenon_group_name,
               stage_id,
               stage_name,
               observer_id,
               series_name,
               benchmark_id,
               session_count,
               session_value,
               benchmark_value
        FROM   all_stages_someone_sales_observation_daily_summary_view
        UNION ALL …
Run Code Online (Sandbox Code Playgroud)

mysql stored-procedures mysql-error-1142

5
推荐指数
1
解决办法
2902
查看次数

5
推荐指数
1
解决办法
6893
查看次数

编译错误:在HTML上下文元素中找到窗口小部件

我已经看到了这个答案,但我无法看到自己的代码中可能出现的问题.这是我的uibinding xml:

<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
<ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder'
xmlns:g='urn:import:com.google.gwt.user.client.ui' xmlns:a='urn:import:com.google.gwt.app.client'>
    <ui:style field='iphone' src='Render.css' />        
<div id='iHeader'>
    <div
        style='display:block; opacity:1; -webkit-tranform:translate3d(0px, 0px, 0px);'>
        <a>
            <span id='waHeadTitle'
                style='display:block; -webkit-tranform:translate3d(0px, 0px, 0px);'>
                <g:HTML ui:field="title" />
            </span>
        </a>
    </div>
</div>
</ui:UiBinder>
Run Code Online (Sandbox Code Playgroud)

然后我收到错误消息:在HTML上下文元素中找到小部件 <g:HTML ui:field='title'>

gwt uibinder

4
推荐指数
1
解决办法
3217
查看次数

不同测试双打之间的区别是否重要?

我只是在阅读Martin Fowler的帖子Mocks Are Not Stubs.他定义了不同的测试双打(或者更确切地说是参考Gerard Meszaros的xUnit模式书):

  • 虚拟对象传递但从未实际使用过.通常它们仅用于填充参数列表.
  • 假对象实际上有工作实现,但通常需要一些使它们不适合生产的快捷方式(内存数据库就是一个很好的例子).
  • 存根提供了在测试期间进行的调用的固定答案,通常不会对测试中编程的任何内容做出任何响应.存根还可以记录有关呼叫的信息,例如记住它'发送'的消息的电子邮件网关存根,或者可能只记录它'发送'的消息.
  • 模拟是......预编程的对象,具有预期,形成了预期接收的调用的规范.

我的问题的第一部分是,这甚至是权威的吗?这种语言被广泛使用和理解吗?

我的问题的第二部分是,似乎我的选择模拟框架Mockito,很容易模糊线条,当然在模拟和存根之间.

  • 一切都被称为"模拟".通过调用Mockito.mock()方法或使用@Mock注释,您可以使用单词"mock"来创建模拟,存根,有时还可以创建虚拟对象(如果简单的"新"不会这样做).例外是"间谍",它可能用于制作类似"假"的东西,但也可用于包装您的系统.
  • 即使您不关心创建测试double的方法的名称,也可以验证(或不验证)double,并且您可以在验证步骤中包含捕获,这似乎包括存根将执行的一些操作(记住所做的调用)和模拟(验证已经进行了某些预期的调用).

我问的原因是我试图根据我上面提到的四个事情来命名我的双打,但有时会混淆某些东西是否真的具有存根或模拟的作用.那么,这是Mockito的缺陷,还是这就是事情的演变方式,这种区别并不重要?

tdd mocking stub mockito

2
推荐指数
1
解决办法
459
查看次数