在rspec中你可以这样做:
let(:input) { 'foo' }
before_each do
setup_some_thing(input)
end
context 'when input is bar do
let(:input) { 'bar' }
it 'does something different' do
end
end
context 'when input is baz do
let(:input) { 'baz' }
it 'does something else different' do
end
end
Run Code Online (Sandbox Code Playgroud)
这允许您将大对象的方法调用或实例化定义为其较小部分的总和.然后,您可以在不同的上下文中覆盖那些单独的小部件.这个想法是在每次测试之前创建一个快乐路径,然后在上下文块中指定与快乐路径的偏差.
不幸的是,我似乎无法用Jest做到这一点.我尝试过以下方法:
beforeEach(() => {
let input = 'foo';
beforeEach(() => {
setupSomeThing(input);
});
describe('when input is bar', () => {
input = 'bar';
it('does something different', () => {
});
});
describe('when input is baz', …
Run Code Online (Sandbox Code Playgroud) 由于枚举的继承限制(您无法在函数中向枚举添加值),我将切换到具有检查约束的自定义域来验证值.我需要能够创建自定义枚举的数组,但是当我尝试这样的事情时:
CREATE DOMAIN foo AS text CHECK (VALUE IN ('foo', 'bar'));
CREATE TABLE foo_table(foo_column foo[]);
Run Code Online (Sandbox Code Playgroud)
我收到了错误
type "foo[]" does not exist
Run Code Online (Sandbox Code Playgroud)
做了一些谷歌搜索,我从2004年发现了这一点,看起来对它的支持似乎即将到来.有没有办法做到这一点?
谢谢!
我想出了一个hacky解决方案,如果没有人在几天内找到更好的解决方案,我会把它作为答案.此解决方案意味着您不能将类型重用为数组,您必须创建一个充当数组的单独类型:
CREATE DOMAIN foo_group AS text[] CHECK (VALUE <@ ARRAY['foo', 'bar']);
CREATE TABLE foo_table(foo_column foo_group);
Run Code Online (Sandbox Code Playgroud)
以下工作:
INSERT INTO foo_table VALUES(ARRAY['foo']);
INSERT INTO foo_table VALUES(ARRAY['foo', 'bar']);
INSERT INTO foo_table VALUES(ARRAY['bar']);
Run Code Online (Sandbox Code Playgroud)
以下不:
INSERT INTO foo_table VALUES(ARRAY['foo', 'baz']);
INSERT INTO foo_table VALUES(ARRAY['baz']);
Run Code Online (Sandbox Code Playgroud) 我有一个使用核心数据的应用程序.应用程序的行为会有所不同,具体取决于是否已填充该数据.
我希望在每个测试用例之前,核心数据将被清空,使每个测试用例在一个新的应用程序实例上运行.测试用例不应该依赖于某些测试设备的状态,特别是因为其他测试用例操纵这种状态.不幸的是,默认情况下,核心数据不仅存在于测试用例之间,还存在于完全独立的测试运行之间.我正试图解决这个问题.
我的第一个想法是将所有核心数据转储到拆解功能中.这样每个测试都会自行清理.不幸的是,我无法使用此命令获取NSManagedObjectContext:
let context = (UIApplication.sharedApplication().delegate as! MyApp.AppDelegate).managedObjectContext!
Run Code Online (Sandbox Code Playgroud)
因为它有这个编译错误:
Undefined symbols for architecture x86_64: "type metadata accessor for MyApp.AppDelegate", referenced from: MyAppUITests.MyAppUITests.tearDown
Run Code Online (Sandbox Code Playgroud)
为了解决这个错误,我尝试将UITests添加到AppDelegate目标成员资格并进行操作@testable import MyApp
.都没有奏效.我需要managedObjectContext来清空核心数据.
现在我认为必须有一种更好的,内置的方式来在每个测试用例运行的开始或结束时转储所有核心数据.它最好是在最后,因为每个测试应该自己清理.有谁知道如何做到这一点?
提前致谢!
使用UI测试,我希望应用程序响应摇动手势,我想在我的快速UI测试中以编程方式触发摇动手势.
在UI测试会话期间记录时触发摇动手势不会产生任何添加的代码.
有没有办法做到这一点?提前致谢!
我使用performSegueWithIdentifier函数启动一个segue,并且我在故事板上声明了segue作为常规推送.知道屏幕上的每个元素相对于屏幕的水平中心以及从顶部或空间从底部或垂直中心对齐的空间也可能是有帮助的.
当segue发生时,所有按钮几乎立即出现在应用程序上.然后,大约30秒后,标签出现.
我正在使用最新版本的xCode,我正在iPhone 6模拟器上进行测试.
知道会发生什么事吗?
提前致谢!
----更新----为了给你提供更多信息,在刷卡解锁你的iPhone后,视图是一个类似于锁定屏幕的屏幕.每个数字键有12个按钮,后退和清晰.4个显示输入的空间.单击数字时,每个空格顶部显示4个隐藏的"*"按钮.
所有这些都是在gui中布局的,所以我确定xml看起来很糟糕(充满了几个"魔法数字"),但我会在这里发布:
----更新2 ----
看起来这种行为只会在我离开场景时发生.如果我将场景设置为主场景,则所有内容都会同时加载.
我正在使用 bravado,它为我创建了基于 swagger 定义调用的函数。swagger 定义包含前缀为 的查询参数$
。IE client.pet.get_pets($limit=10)
。
问题是,我无法使用,$limit=10
因为它会引发语法错误。
有没有办法在 python 中逃避这个问题?
对于我的应用程序,我有时需要设置会话授权以在给定用户的权限下执行某些命令。
我们在应用程序后面使用 RDS,我们在 RDS 上的数据库超级用户不断获得permission denied to set session authorization
.
有没有办法在 RDS 上启用它?或者它只是不支持的操作?
提前致谢!
postgresql database-permissions amazon-web-services amazon-rds
ios ×3
postgresql ×2
amazon-rds ×1
bravado ×1
core-data ×1
ecmascript-6 ×1
enums ×1
javascript ×1
jestjs ×1
python ×1
segue ×1
shake ×1
sql ×1
swagger ×1
swift ×1
swift2 ×1
testing ×1
ui-testing ×1
uilabel ×1
xcode ×1