在chefspec中存根辅助功能

时间:2016-08-19 15:42:27

标签: ruby chef stub

整天搜索并且没有解决这个问题,所以这里就是这样。 编辑:写这篇文章的过程迫使我以不同的方式思考问题,我想出来了。所以我在这里回答我自己的问题。我想我已经检查了#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'] 以获得有用的响应。

1 个答案:

答案 0 :(得分:0)

正如我上面所说,我正在写这个问题,而写这个问题的行为让我明白了问题是什么:我没有以正确的格式嘲笑回归,一个键值数组

我终于想出了这个:

before(:each) do
  receive(:search_for_nodes).and_return(['fqdn' => 'dummy_server'])
end

它有效,我可以测试我的食谱在正确的位置正确使用dummy_server

我希望这有助于未来的搜索者!