草庐IT

google-app-engine - Go Appengine 端点测试的问题

coder 2024-07-10 原文

我正在尝试在使用 appengine 时创建端点测试。不幸的是,由于在创建测试 *Request 结构时使用的 url 中缺少模式(和主机),测试一直失败。运行应用引擎测试时,会为在半随机端口号上运行的特定测试生成一个服务器,这使得似乎无法定义完整的 url 来执行测试。

像这样运行测试的 official docs 非常稀疏,只给出了一半的例子,所以我一直在摸索如何让它发挥作用。

这是我从代码片段中标记的行得到的错误 错误:收到意外错误“发布/auth:不支持的协议(protocol)方案\”\“”

测试代码

func TestEndpoints_Auth(t *testing.T) {

    // input data
    account := Account{
        AuthProvider:   "facebook",
        AuthProviderId: "123345456",
    }
    b, _ := json.Marshal(&account)
    reader := bytes.NewReader(b)

    // test server
    inst, err := aetest.NewInstance(nil)
    if !assert.NoError(t, err) { return }
    defer inst.Close()

    // request
    client := http.Client{}
    req, err := inst.NewRequest("POST", "/auth", reader)
    if !assert.NoError(t, err) { return }
    req.Header.Add(AppAuthToken, "foobar")
    resp, err := client.Do(req)
    if !assert.NoError(t, err) { return }   // <=== Where the error occurs

    // tests
    if !assert.Nil(t, err) { return }
    assert.Equal(t, http.StatusCreated, resp.StatusCode)
}

日志 [GIN-debug] POST/auth --> bitbucket.org/chrisolsen/chriscamp.(*endpoints).Auth-fm(5 个处理程序) [GIN 调试] GET/accounts/me --> bitbucket.org/chrisolsen/chriscamp.(*endpoints).GetMyAccount-fm(7 个处理程序) INFO 2016-04-22 13:23:39,278 devappserver2.py:769] 跳过 SDK 更新检查。 警告 2016-04-22 13:23:39,278 devappserver2.py:785] DEFAULT_VERSION_HOSTNAME 将无法使用 --port=0 正确设置 警告 2016-04-22 13:23:39,345 simple_search_stub.py:1126] 无法从 c:\users\chris\appdata\local\temp\appengine.testapp\search_indexes 读取搜索索引 INFO 2016-04-22 13:23:39,354 api_server.py:205] 在以下位置启动 API 服务器:http://localhost:54461 INFO 2016-04-22 13:23:41,043 dispatcher.py:197] 启动模块“默认”运行于:http://localhost:54462 INFO 2016-04-22 13:23:41,046 admin_server.py:116] 在以下位置启动管理服务器:http://localhost:54466

最佳答案

我真的很希望执行 api 黑盒测试,但是 似乎 使用 appengine 是无法撤消的。相反,我现在直接在端点上执行测试。

req, _ := inst.NewRequest("POST", "/auth", reader)
req.Header.Add(AppAuthToken, "foobar")
resp := httptest.NewRecorder()

handlePostAuth(resp, req)
assert.Equal(t, http.StatusCreated, resp.Code)

关于google-app-engine - Go Appengine 端点测试的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36799573/

有关google-app-engine - Go Appengine 端点测试的问题的更多相关文章

  1. ruby-on-rails - 使用 Ruby on Rails 进行自动化测试 - 最佳实践 - 2

    很好奇,就使用ruby​​onrails自动化单元测试而言,你们正在做什么?您是否创建了一个脚本来在cron中运行rake作业并将结果邮寄给您?git中的预提交Hook?只是手动调用?我完全理解测试,但想知道在错误发生之前捕获错误的最佳实践是什么。让我们理所当然地认为测试本身是完美无缺的,并且可以正常工作。下一步是什么以确保他们在正确的时间将可能有害的结果传达给您? 最佳答案 不确定您到底想听什么,但是有几个级别的自动代码库控制:在处理某项功能时,您可以使用类似autotest的内容获得关于哪些有效,哪些无效的即时反馈。要确保您的提

  2. ruby - 在 64 位 Snow Leopard 上使用 rvm、postgres 9.0、ruby 1.9.2-p136 安装 pg gem 时出现问题 - 2

    我想为Heroku构建一个Rails3应用程序。他们使用Postgres作为他们的数据库,所以我通过MacPorts安装了postgres9.0。现在我需要一个postgresgem并且共识是出于性能原因你想要pggem。但是我对我得到的错误感到非常困惑当我尝试在rvm下通过geminstall安装pg时。我已经非常明确地指定了所有postgres目录的位置可以找到但仍然无法完成安装:$envARCHFLAGS='-archx86_64'geminstallpg--\--with-pg-config=/opt/local/var/db/postgresql90/defaultdb/po

  3. ruby - 通过 rvm 升级 ruby​​gems 的问题 - 2

    尝试通过RVM将RubyGems升级到版本1.8.10并出现此错误:$rvmrubygemslatestRemovingoldRubygemsfiles...Installingrubygems-1.8.10forruby-1.9.2-p180...ERROR:Errorrunning'GEM_PATH="/Users/foo/.rvm/gems/ruby-1.9.2-p180:/Users/foo/.rvm/gems/ruby-1.9.2-p180@global:/Users/foo/.rvm/gems/ruby-1.9.2-p180:/Users/foo/.rvm/gems/rub

  4. ruby - 使用 C 扩展开发 ruby​​gem 时,如何使用 Rspec 在本地进行测试? - 2

    我正在编写一个包含C扩展的gem。通常当我写一个gem时,我会遵循TDD的过程,我会写一个失败的规范,然后处理代码直到它通过,等等......在“ext/mygem/mygem.c”中我的C扩展和在gemspec的“扩展”中配置的有效extconf.rb,如何运行我的规范并仍然加载我的C扩展?当我更改C代码时,我需要采取哪些步骤来重新编译代码?这可能是个愚蠢的问题,但是从我的gem的开发源代码树中输入“bundleinstall”不会构建任何native扩展。当我手动运行rubyext/mygem/extconf.rb时,我确实得到了一个Makefile(在整个项目的根目录中),然后当

  5. ruby - Ruby 的 Hash 在比较键时使用哪种相等性测试? - 2

    我有一个围绕一些对象的包装类,我想将这些对象用作散列中的键。包装对象和解包装对象应映射到相同的键。一个简单的例子是这样的:classAattr_reader:xdefinitialize(inner)@inner=innerenddefx;@inner.x;enddef==(other)@inner.x==other.xendenda=A.new(o)#oisjustanyobjectthatallowso.xb=A.new(o)h={a=>5}ph[a]#5ph[b]#nil,shouldbe5ph[o]#nil,shouldbe5我试过==、===、eq?并散列所有无济于事。

  6. ruby - RSpec - 使用测试替身作为 block 参数 - 2

    我有一些Ruby代码,如下所示:Something.createdo|x|x.foo=barend我想编写一个测试,它使用double代替block参数x,这样我就可以调用:x_double.should_receive(:foo).with("whatever").这可能吗? 最佳答案 specify'something'dox=doublex.should_receive(:foo=).with("whatever")Something.should_receive(:create).and_yield(x)#callthere

  7. ruby - 通过 RVM (OSX Mountain Lion) 安装 Ruby 2.0.0-p247 时遇到问题 - 2

    我的最终目标是安装当前版本的RubyonRails。我在OSXMountainLion上运行。到目前为止,这是我的过程:已安装的RVM$\curl-Lhttps://get.rvm.io|bash-sstable检查已知(我假设已批准)安装$rvmlistknown我看到当前的稳定版本可用[ruby-]2.0.0[-p247]输入命令安装$rvminstall2.0.0-p247注意:我也试过这些安装命令$rvminstallruby-2.0.0-p247$rvminstallruby=2.0.0-p247我很快就无处可去了。结果:$rvminstall2.0.0-p247Search

  8. ruby - Sinatra:运行 rspec 测试时记录噪音 - 2

    Sinatra新手;我正在运行一些rspec测试,但在日志中收到了一堆不需要的噪音。如何消除日志中过多的噪音?我仔细检查了环境是否设置为:test,这意味着记录器级别应设置为WARN而不是DEBUG。spec_helper:require"./app"require"sinatra"require"rspec"require"rack/test"require"database_cleaner"require"factory_girl"set:environment,:testFactoryGirl.definition_file_paths=%w{./factories./test/

  9. ruby - Fast-stemmer 安装问题 - 2

    由于fast-stemmer的问题,我很难安装我想要的任何ruby​​gem。我把我得到的错误放在下面。Buildingnativeextensions.Thiscouldtakeawhile...ERROR:Errorinstallingfast-stemmer:ERROR:Failedtobuildgemnativeextension./System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/rubyextconf.rbcreatingMakefilemake"DESTDIR="cleanmake"DESTDIR=

  10. ruby-on-rails - 迷你测试错误 : "NameError: uninitialized constant" - 2

    我遵循MichaelHartl的“RubyonRails教程:学习Web开发”,并创建了检查用户名和电子邮件长度有效性的测试(名称最多50个字符,电子邮件最多255个字符)。test/helpers/application_helper_test.rb的内容是:require'test_helper'classApplicationHelperTest在运行bundleexecraketest时,所有测试都通过了,但我看到以下消息在最后被标记为错误:ERROR["test_full_title_helper",ApplicationHelperTest,1.820016791]test

随机推荐