整天搜索并且没有解决这个问题,所以这里就是这样。 编辑:写这篇文章的过程迫使我以不同的方式思考问题,我想出来了。所以我在这里回答我自己的问题。我想我已经检查了#34;回答你自己的问题"。
我在食谱char *getNextLine( FILE *inputStream )
{
char staticBuffer[SOME_BUFFER_SIZE] = {0};
char *dynamicBuffer = calloc( SOME_BUFFER_SIZE, sizeof *dynamicBuffer );
size_t dynamicBufferSize = SOME_BUFFER_SIZE;
bool done = false;
/**
* If the initial allocation fails, we have real problems.
*/
assert( dynamicBuffer != NULL );
while ( !done && fgets( staticBuffer, sizeof staticBuffer, stdin ) )
{
/**
* Check for the newline; if it's there, remove it and set the
* done flag to exit the loop.
*/
char *newline = strchr( staticBuffer, '\n' );
if ( (done = (newline != NULL)) )
{
*newline = 0;
}
/**
* Do we need to extend our dynamic buffer?
*/
if ( strlen( dynamicBuffer ) + strlen( staticBuffer ) > dynamicBufferSize )
{
/**
* Yes. Double the size of the dynamic buffer.
*/
char *tmp = realloc( dynamicBuffer, sizeof *dynamicBuffer * ( dynamicBufferSize * 2 ) );
if ( tmp )
{
dynamicBuffer = tmp;
dynamicBufferSize *= 2;
}
else
{
// could not extend buffer, print an error and return what we have
fprintf( stderr, "ERR: Could not extend dynamic input buffer\n" );
return dynamicBuffer;
}
}
strcat( dynamicBuffer, staticBuffer );
}
return dynamicBuffer;
}
中有一行调用辅助函数:
web.rb
prodservice_machine_name = search_for_nodes("ProdApp_Service_Install:1 AND chef_environment:#{node_env}")[0]['fqdn']
中定义了 search_for_nodes
,围绕spec_helpers.rb
搜索提供了一些帮助,并返回knife
我们使用响应来查找节点的计算机名称:
nodes[]
我无法弄清楚如何存根prodservice_machine_name = search_for_nodes("ProdApp_Service_Install:1 AND chef_environment:#{node_env}")[0]['fqdn']
以获得有用的响应。
答案 0 :(得分:0)
正如我上面所说,我正在写这个问题,而写这个问题的行为让我明白了问题是什么:我没有以正确的格式嘲笑回归,一个键值数组
我终于想出了这个:
before(:each) do
receive(:search_for_nodes).and_return(['fqdn' => 'dummy_server'])
end
它有效,我可以测试我的食谱在正确的位置正确使用dummy_server
。
我希望这有助于未来的搜索者!