小编red*_*ulf的帖子

使用Protractor测试确认对话框

这似乎是一个非常简单的问题,但我真的无法在网上找到答案,我自己无法找到答案.

我正在使用AngularJS作为我的应用程序,在某些时候,我有一个原生的JavaScript确认框/对话框,询问用户他/她是否想要接受或取消更改.

如何在我的测试中模拟选定的选项(使用量角器)?是否可以访问确认框并"单击"确定或取消并在我的测试中采取相应措施?我猜是这样的

ptor.switchTo().<something>
Run Code Online (Sandbox Code Playgroud)

是可能的,但我似乎无法找到答案.

javascript testing end-to-end angularjs protractor

16
推荐指数
2
解决办法
1万
查看次数

Liquibase - 生成脚本而不将更改集应用于数据库

在我目前的项目中,有一个数据库团队在将所有脚本应用到生产之前检查它们.

我们使用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)

仅生成脚本而不尝试连接到数据库.

我被迫指定数据库属性(驱动程序等)的事实使我相信这是为了始终更改数据库,但我想应该可以生成脚本而不尝试对数据库应用更改.

有什么想法吗?是否有可能,但我完全走错了路?或者我错过了一些简单的财产?或者根本不支持它?

提前致谢.

liquibase maven-plugin maven

9
推荐指数
1
解决办法
9391
查看次数

使用DSE的Java API映射Cassandra物化视图

我有一个带有相关物化视图的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'

有一些代码生成正在进行,所以它似乎没有正确生成,但我无法弄清楚是什么.

我找到的唯一有用的文档就是这里这里,但似乎都没有提供帮助.

我究竟做错了什么?

java cassandra datastax-java-driver datastax

8
推荐指数
1
解决办法
272
查看次数

如何使用grunt和量角器进行单e2e测试

我假设这是可能的,实际上非常简单,但我是咕噜咕噜和量角器的新手,我无法在网上找到答案(也许我使用了错误的搜索条件).

我在文件中有以下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)

当然这会运行我所有的测试,但是当我正在开发一个特定的测试时,我不想运行整个测试.我想运行这个文件.

我怎样才能做到这一点?有旗帜还是什么?

谢谢

javascript end-to-end angularjs gruntjs protractor

7
推荐指数
2
解决办法
9349
查看次数

Scala中的事务方法与Slick一起玩(类似于Spring @Transactional,也许?)

我知道斯卡拉,作为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)

scala playframework playframework-2.0 slick slick-3.0

7
推荐指数
1
解决办法
1076
查看次数