给定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表达式?
我有一个名为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) 如果没有,EasyMock上是否存在?
谢谢.
我已经看到了这个答案,但我无法看到自己的代码中可能出现的问题.这是我的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'>
我只是在阅读Martin Fowler的帖子Mocks Are Not Stubs.他定义了不同的测试双打(或者更确切地说是参考Gerard Meszaros的xUnit模式书):
- 虚拟对象传递但从未实际使用过.通常它们仅用于填充参数列表.
- 假对象实际上有工作实现,但通常需要一些使它们不适合生产的快捷方式(内存数据库就是一个很好的例子).
- 存根提供了在测试期间进行的调用的固定答案,通常不会对测试中编程的任何内容做出任何响应.存根还可以记录有关呼叫的信息,例如记住它'发送'的消息的电子邮件网关存根,或者可能只记录它'发送'的消息.
- 模拟是......预编程的对象,具有预期,形成了预期接收的调用的规范.
我的问题的第一部分是,这甚至是权威的吗?这种语言被广泛使用和理解吗?
我的问题的第二部分是,似乎我的选择模拟框架Mockito,很容易模糊线条,当然在模拟和存根之间.
我问的原因是我试图根据我上面提到的四个事情来命名我的双打,但有时会混淆某些东西是否真的具有存根或模拟的作用.那么,这是Mockito的缺陷,还是这就是事情的演变方式,这种区别并不重要?