我正在努力弄清楚应该从功能测试中排除什么(在我的情况下,使用Rails,但我想框架可能无关紧要).
我的印象是我不应该使用功能测试来处理将在单元测试中捕获的内容 - 例如检查字段不能包含太多字符,或者字段不能为空.如果是这种情况,应该通过功能测试来测试哪些突发事件,和/或将其他人仅用于单元测试的经验法则是什么?
或者这种印象一开始是不正确的?
我正在寻找解决奇怪问题的方法.我有一个控制器,需要身份验证(与设计宝石).我添加了Devise TestHelpers,但我无法让它工作.
require 'test_helper'
class KeysControllerTest < ActionController::TestCase
include Devise::TestHelpers
fixtures :keys
def setup
@user = User.create!(
:email => 'testuser@demomailtest.com',
:password => 'MyTestingPassword',
:password_confirmation => 'MyTestingPassword'
)
sign_in @user
@key = keys(:one)
end
test "should get index" do
get :index
assert_response :success
assert_not_nil assigns(:keys)
end
test "should get new" do
get :new
assert_response :success
end
test "should create key" do
assert_difference('Key.count') do
post :create, :key => @key.attributes
end
assert_redirected_to key_path(assigns(:key))
end
test "should destroy key" do
assert_difference('Key.count', -1) do
delete …Run Code Online (Sandbox Code Playgroud) 我希望使用KIF为我们的iPhone应用程序编写功能测试.它使用"辅助功能标签"来标识它正在测试的UI项目.如何在xcode4的界面构建器中为视图设置辅助功能标签?
我正在尝试使用RSpec来功能测试我的REST apis.
我喜欢它的工作方式是使用CI构建来构建我的应用程序并将其部署到云中的某个测试服务器,然后启动自动功能测试.但为了正确地做到这一点,我需要能够传入部署应用程序的基本URL /域.它不会是一样的.
到目前为止我发现的所有东西都让RSpec看起来不能做到这一点.如果我不能在命令行上传递参数,还有另一种方法吗?或者RSpec不是这个的正确选择?
在Symfony 3.3之前,允许将模拟服务设置到容器上.现在使用3.3引发了弃用警告,因为该服务已经预先定义.
覆盖容器中现有或预定义服务以为功能测试设置模拟服务的新标准方法是什么?
例如,在我们的例子中,我们设置了一个新的实体管理器,其中一个新的模拟连接指向一个克隆的数据库进行测试
$container->set('doctrine.orm.entity_manager', $testEm);
Run Code Online (Sandbox Code Playgroud)
自Symfony 3.3起,不再支持设置"doctrine.orm.entity_manager"预定义服务,Symfony 4.0中将不再支持该服务.
我的Rails应用程序中有一个名为"Photo"的RESTful资源.我正在使用Paperclip来提供我的照片的不同"样式"(缩略图等),我正在使用自定义路径来RESTful访问这些样式:
map.connect "photos/:id/style/*style", :controller => "photos", :action => "show"
Run Code Online (Sandbox Code Playgroud)
这工作正常,但我想写一个测试,以确保它保持这种方式.
我已经有一个功能测试来调用Photo控制器的show动作(实际上是由scaffold生成):
test "should show photo" do
get :show, :id => photos(:one).to_param
assert_response :success
end
Run Code Online (Sandbox Code Playgroud)
它测试URL"/ photo/1"处的动作执行情况.现在我想测试URL"/ photo/1/style/foo"的执行情况.不幸的是,我似乎无法使用ActionController :: TestCase来访问该URL; get方法总是想要一个action/id,并且不接受URL后缀.
如何测试自定义网址?
在检查@ fernyb的答案时,我在同一个rdoc中找到了这个片段
在测试中,您只需传递URL或命名路由即可获取或发布.def send_to_jail get'/ jail'assert_response:success assert_template"jail/front"end
但是,当我实际尝试时,我收到一条错误消息:
test "should get photo" do
get "/photos/1/style/original"
assert_equal( "image/jpeg", @response.content_type )
end
ActionController::RoutingError: No route matches {:action=>"/photos/1/style/original", :controller=>"photos"}
Run Code Online (Sandbox Code Playgroud)
我想知道我做错了什么.
我正在为使用Symfony2(2.1)完成的应用程序做一些功能测试,我遇到了问题.
当用户单击链接或其他元素时,我会加载网站的某些部分,但这些操作是使用jQuery和$ .post调用执行的.如何让Symfony2抓取工具进行这些调用?
当我做这样的事情时:
$link = $crawler->filter('ul.line_menu a')->eq(1)->link();
$crawler = $client->click($link);
Run Code Online (Sandbox Code Playgroud)
爬虫获取"a"元素的"href"并启动它,但"href"为空,并且"click()"函数与此元素相关联,从而阻止了使用"preventDefault()"的单击操作.
谢谢大家!!:)
我在WAMP平台上运行最新版本的Codeception - 我的接受是非常基本的,但工作正常(见下文):
$I = new WebGuy($scenario);
$I->wantTo('Log in to the website');
$I->amOnPage('/auth/login');
$I->fillField('identity','admin@admin.com');
$I->fillField('password','password');
$I->click('Login');
Run Code Online (Sandbox Code Playgroud)
简而言之 - 它检查页面是'auth/login'填写2个表单字段并单击登录按钮.这没有任何问题.
这是我相同的功能测试:
$I = new TestGuy($scenario);
$I->wantTo('perform actions and see result');
$I->amOnPage('/auth/login');
$I->fillField('identity','admin@admin.com');
$I->fillField('password','password');
$I->click('Login');
Run Code Online (Sandbox Code Playgroud)
当我从命令行运行它时,我得到以下错误(不是完整的错误,但足以理解问题):
1) Couldn't <-[35;1mperform actions and see result<-
[0m in <-[37;1LoginCept.php<-[0m <-41;37mRuntimeException:
Call to undefined method TestGuy::amOnPage<-[0m.......
Run Code Online (Sandbox Code Playgroud)
我的验收套件启用了"PhpBrowser"和"WebHelper"模块,功能套件启用了"FileSystem"和"TestHelper"(在acceptance.suite.yml和functional.suite.yml文件中)
显然amOnPage()函数是问题 - 然而我被引导相信amOnPage()应该在验收和功能测试中工作?或者我错了 - 也 - 有人可以解释数字的含义,例如'< - [35; 1m'出现
更新:我尝试将'WebHelper'模块添加到functional.suite.yml但我没有看到在TestGuy.php文件中自动生成amOnPage() - 任何想法?
我的配置文件如下:
WebGuy
class_name: WebGuy
modules:
enabled:
- PhpBrowser
- WebHelper
config:
PhpBrowser:
url: 'http://v3.localhost/'
Run Code Online (Sandbox Code Playgroud)
TestGuy
class_name: …Run Code Online (Sandbox Code Playgroud) command-line unit-testing acceptance-testing functional-testing codeception
问题:我想知道是否可以在一个脚本文件中使用测试框架进行并行浏览,因此使用tester模块和casperjs测试命令.
我见过有些人创建了两个casper实例: CasperJS同时请求和https://groups.google.com/forum/#!topic/casperjs/Scx4Cjqp7hE,但正如文档中所述,我们无法创建新的casper实例在测试脚本中.
所以我尝试用类似的简单示例 - 使用casper测试脚本(只需复制并执行它就可以了):
var url1 = "http://casperjs.readthedocs.org/en/latest/testing.html"
,url2 = "http://casperjs.readthedocs.org/en/latest/testing.html"
;
var casperActions = {
process1: function () {
casper.test.begin('\n********* First processus with our test suite : ***********\n', function suite(test) {
"use strict";
casper.start()
.thenOpen(url1,function(){
this.echo("1","INFO");
});
casper.wait(10000,function(){
casper.test.comment("If parallel, it won't be printed before comment of the second processus !");
})
.run(function() {
this.test.comment('----------------------- First processus over ------------------------\n');
test.done();
});
});
},
process2: function () {
casper.test.begin('\n********* Second processus with our …Run Code Online (Sandbox Code Playgroud) parallel-processing functional-testing node.js promise casperjs
我正在尝试在Swift中执行一些非常简单的功能/功能测试,但我有一些疑问,我需要解决才能创建有用的测试.
我想验证由另一个Controller提供的Controller是否存在于应用程序导航层次结构中(如果Controller已经被呈现为NavigationController,如Modal或其他什么,则无关紧要).
如果我以编程方式实例化并显示控制器,直接进入测试功能,当我检查On Top控制器时,我总是得到Storyboard根控制器而不是我刚刚实例化的控制器,好像我手动创建的控制器永远不会添加到应用程序层次结构中.
这里是伪代码的一个例子:
func testController(){
// Instantiate a controller
let storyBoard:UIStoryboard = UIStoryboard(name: "Main", bundle: NSBundle(forClass: self.dynamicType))
let controller1 = storyBoard.instantiateViewControllerWithIdentifier("Controller1") as? ControllerOneViewController
controller1.loadView()
// Call a function that instantiates another controller
controller1.pushAnotherController()
// Test that the current shown controller is what we expect...
let rootController = UIApplication.sharedApplication().keyWindow?.rootViewController
XCTAssert(rootController.self == TheExpectedClass, "Controller is not what we expect")
}
Run Code Online (Sandbox Code Playgroud) symfony ×2
unit-testing ×2
casperjs ×1
codeception ×1
command-line ×1
controller ×1
device ×1
iphone ×1
jquery ×1
node.js ×1
phpunit ×1
promise ×1
rest ×1
rspec ×1
ruby ×1
swift ×1
tdd ×1
testing ×1
url ×1
web-crawler ×1
xcode4 ×1