这似乎是一个非常简单的问题,但我真的无法在网上找到答案,我自己无法找到答案.
我正在使用AngularJS作为我的应用程序,在某些时候,我有一个原生的JavaScript确认框/对话框,询问用户他/她是否想要接受或取消更改.
如何在我的测试中模拟选定的选项(使用量角器)?是否可以访问确认框并"单击"确定或取消并在我的测试中采取相应措施?我猜是这样的
ptor.switchTo().<something>
Run Code Online (Sandbox Code Playgroud)
是可能的,但我似乎无法找到答案.
在我目前的项目中,有一个数据库团队在将所有脚本应用到生产之前检查它们.
我们使用Liquibase将更改集应用于开发,但是对于生产,我们需要能够生成包含所有语句的*.sql文件.
根据liquibase-maven-plugin的文档,updateSQL应该是我想要的:http://www.liquibase.org/documentation/maven/maven_updatesql.html.
所以我创建了两个maven配置文件.一个用于将更改应用于本地开发数据库(使用liquibase:update),另一个用于生成脚本.问题是:执行liquibase:updateSQL会生成*.sql文件(如预期的那样),但它也会尝试连接到数据库并应用更改(不是预期的).我相信updateSQL的文档会导致错误,因为它说:
生成将数据库更新为DatabaseChangeLogs中指定的当前版本所需的SQL.
没有提到任何它实际应用变更集,如liquibase:update确实如此.
我可能会在这里误解文档,但是不应该更新SQL只生成sql或它应该实际更新+生成sql?
这是我的插件配置:
<plugin>
<groupId>org.liquibase</groupId>
<artifactId>liquibase-maven-plugin</artifactId>
<version>3.0.5</version>
<configuration>
<changeLogFile>src/main/resources/db/liquibase_changeset.xml</changeLogFile>
<driver>oracle.jdbc.driver.OracleDriver</driver>
<url>${liquibase.db.url}</url>
<username>${liquibase.db.user}</username>
<password>${liquibase.db.password}</password>
<promptOnNonLocalDatabase>false</promptOnNonLocalDatabase>
</configuration>
<executions>
<execution>
<phase>process-resources</phase>
<goals>
<goal>${liquibase.exec.goal}</goal>
</goals>
</execution>
</executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)
我创建了这样的配置文件:
<profiles>
<profile>
<id>local</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<liquibase.exec.goal>update</liquibase.exec.goal>
<liquibase.exec.prompt>false</liquibase.exec.prompt>
<liquibase.db.url>jdbc:oracle:thin:@host:1521:xe</liquibase.db.url>
<liquibase.db.user>user</liquibase.db.user>
<liquibase.db.password>password</liquibase.db.password>
</properties>
</profile>
<profile>
<id>uat</id>
<properties>
<liquibase.exec.goal>updateSQL</liquibase.exec.goal>
<liquibase.exec.prompt>true</liquibase.exec.prompt>
<liquibase.db.url>jdbc:oracle:thin:@host2:1521:xe</liquibase.db.url>
<liquibase.db.user>user2</liquibase.db.user>
<liquibase.db.password>password2</liquibase.db.password>
</properties>
</profile>
</profiles>
Run Code Online (Sandbox Code Playgroud)
鉴于我的maven配置和我的理解,我希望
mvn install -P uat
Run Code Online (Sandbox Code Playgroud)
仅生成脚本而不尝试连接到数据库.
我被迫指定数据库属性(驱动程序等)的事实使我相信这是为了始终更改数据库,但我想应该可以生成脚本而不尝试对数据库应用更改.
有什么想法吗?是否有可能,但我完全走错了路?或者我错过了一些简单的财产?或者根本不支持它?
提前致谢.
我有一个带有相关物化视图的cassandra表.
主键是uuid类型的单个id,我没有排序键.我们称之为my_table_id.此表包含related_id我要用于搜索的内容.
然后我有一个定义为该表的物化视图
PRIMARY KEY (related_id, my_table_id) WITH CLUSTERING ORDER BY (my_table_id ASC)
Run Code Online (Sandbox Code Playgroud)
PS:我意识到这是在Cassandra中分区数据的错误方法,但不幸的是,这段代码是继承的.
我在我的java代码中定义了我的表:
@Table(table = "my_table")
public class MyTableType {
@PartitionKey
@Column("my_table_id")
@Codec(MyIdCassandraConverter.class)
CustomUUIDType myTableId;
@Column("related_id")
@Codec(MyRelatedIdCassandraConverter.class)
MyRelatedId relatedId;
(...)
}
Run Code Online (Sandbox Code Playgroud)
这两个自定义类型只是UUID周围的包装器.再次,继承.
我的物化视图定义为:
@MaterializedView(baseEntity = MyTableType.class, view = "my_table_by_related_id")
public class MyTableTypeByRelatedId {
@PartitionKey
@Column("related_id")
@Codec(MyRelatedIdCassandraConverter.class)
MyRelatedId relatedId;
@ClusteringColumn
@Column("my_table_id")
@Codec(MyIdCassandraConverter.class)
CustomUUIDType myTableId;
}
Run Code Online (Sandbox Code Playgroud)
代码似乎生成正确,但是当我启动Spring Boot应用程序时,我得到:
错误:java:找不到视图类'mypackage.MyTableTypeByRelatedId'的基本实体类'mypackage.MyTableType'错误:java:解析时出错:找不到视图类'mypackage.MyTableTypeByRelatedId'的基本实体类'mypackage.MyTableType'
有一些代码生成正在进行,所以它似乎没有正确生成,但我无法弄清楚是什么.
我找到的唯一有用的文档就是这里和这里,但似乎都没有提供帮助.
我究竟做错了什么?
我假设这是可能的,实际上非常简单,但我是咕噜咕噜和量角器的新手,我无法在网上找到答案(也许我使用了错误的搜索条件).
我在文件中有以下e2e测试test/e2e/Recipients.js:
describe('Recipients Tab', function() {
beforeEach(function () {
browser.get('#/recipients');
});
it('should have no e-mail list', function () {
expect(element(by.css('accordion')).isPresent()).toBe(false);
});
});
Run Code Online (Sandbox Code Playgroud)
目前,我这样做:
grunt e2e
Run Code Online (Sandbox Code Playgroud)
我的量角器配置文件:
exports.config = {
seleniumAddress: 'http://localhost:4444/wd/hub',
capabilities: {
'browserName': 'chrome'
},
specs: ['../e2e/**/*.js'],
baseUrl : 'http://localhost:8080/spr',
jasmineNodeOpts: {
showColors: true // Use colors in the command line report.
}
};
Run Code Online (Sandbox Code Playgroud)
当然这会运行我所有的测试,但是当我正在开发一个特定的测试时,我不想运行整个测试.我想运行这个文件.
我怎样才能做到这一点?有旗帜还是什么?
谢谢
我知道斯卡拉,作为funcional语言,应该从一个共同的面向对象语言,比如Java的工作方式不同,但我敢肯定,必须有包一组在一个单一的交易数据库变化的方式,确保作为原子以及其他所有ACID财产.
正如光滑的文档(http://slick.lightbend.com/doc/3.1.0/dbio.html)中所解释的那样,DBIOAction允许在这样的事务中对db操作进行分组:
val a = (for {
ns <- coffees.filter(_.name.startsWith("ESPRESSO")).map(_.name).result
_ <- DBIO.seq(ns.map(n => coffees.filter(_.name === n).delete): _*)
} yield ()).transactionally
val f: Future[Unit] = db.run(a)
Run Code Online (Sandbox Code Playgroud)
然而,我的使用情况下(和最真实世界的例子,我能想到的),我有一个代码结构和Controller,这暴露了代码为我的REST端点,该控制器调用多个服务和每个服务将委托数据库操作的DAO.
我常用代码结构的一个粗略示例:
class UserController @Inject(userService: UserService) {
def register(userData: UserData) = {
userService.save(userData).map(result => Ok(result))
}
}
class UserService @Inject(userDao: UserDao, addressDao: AddressDao) {
def save(userData: UserData) = {
for {
savedUser <- userDao.save(userData.toUser)
savedAddress <- addressDao.save(userData.addressData.toAddress)
} yield savedUser.copy(address = savedAddress)
}
}
class SlickUserDao {
def save(user: User) = { …Run Code Online (Sandbox Code Playgroud) angularjs ×2
end-to-end ×2
javascript ×2
protractor ×2
cassandra ×1
datastax ×1
gruntjs ×1
java ×1
liquibase ×1
maven ×1
maven-plugin ×1
scala ×1
slick ×1
slick-3.0 ×1
testing ×1