是的,这有点混乱,但是我必须执行以下操作(这只是一个简化的示例):
import org.mockito.*
import org.mockito.Mockito.`when`
import org.mockito.Mockito.anyDouble
class BasicReposTest {
@get:Rule
val activityRule = ActivityTestRule(MainActivity::class.java)
@get:Rule
val mockitoRule: MockitoRule = MockitoJUnit.rule()
@Mock
lateinit var mockedDb : AppDatabase
@Before
fun setTheDatabase() {
val context = ApplicationProvider.getApplicationContext<Context>()
mockedDb = Room.inMemoryDatabaseBuilder(
context, AppDatabase::class.java).build()
}
@Test
fun doesReposRequestBounds() {
`when`(mockedDb.momentDao().findMomentsByBound(ArgumentMatchers.anyDouble(), ArgumentMatchers.anyDouble(),
anyDouble(), ArgumentMatchers.anyDouble())).thenReturn(momentList)
//Request first set of moments
repos.queryMapMoments(bounds, 20.toFloat())
//Do we get a list of moments sent to livedata?
assertTrue(mappedMoments.value!!.size >= momentList.size)
val list : List<Moment> = mappedMoments.value!!
for (value in list) {
System.out.println("D " + "RequestMomentsFromDatabaseByBoundsTest " + "MID = " + value.mId )
}
}
我需要在单引号内的双引号内包含单引号。似乎标准的sudo -H -u user1 bash -c ‘ssh -I /home/user1/.ssh/id_rsa -f user2@machine1.domain1.com “find ./ -name ‘*.txt’”’
不能正常工作,因为双打会关闭双打而不是引用单引号。可能是:'"'"'
我在那里需要的每一个人吗?
我尝试跳过ssh命令中的"'"'""'
,但是当然失败了。
答案 0 :(得分:2)
您不需要bash -c
层;只需直接从ssh
运行sudo
即可。
sudo -H -u user1 ssh -I /home/user1/.ssh/id_rsa -f user2@machine1.domain1.com "find ./ -name \"*.txt\""
(-I
选项是不必要的;如果ssh
以user1
的身份运行,则默认密钥为~user1/.ssh/id_rsa
。您可能是说-i
无论如何; -I
指定要使用的PKCS#11库,而不是私钥。)
也就是说,您不能在单引号引起来的字符串中包含单引号。如有疑问,请使用双引号,并正确转义任何嵌套的双引号。
答案 1 :(得分:0)
chepner的答案就足够了。
如果需要bash -c
,则可以使用这种看起来很杂乱的解决方案:
sudo -H -u user1 bash -c 'ssh -I /home/user1/.ssh/id_rsa -f user2@machine1.domain1.com "find ./ -name '"'"'*.txt'"'"'"'
解释
'... "find ./ -name '[first ' ended here] "'" [second ' quote start] '*.txt'[pattern] "'"[second ' end] '"'[ " ended here]
我将‘
替换为'
。