Играть! + Сиена + GAE + Юнит
Я пытаюсь запустить некоторые базовые юнит-тесты в Play! фреймворк, использующий постоянную библиотеку Siena с GAE в качестве предполагаемой цели развертывания.
Я правильно настроил проект и могу развернуть приложение в GAE. Я создал базовый объект домена:
public class User extends Model {
@Id(Generator.AUTO_INCREMENT)
public Long id;
@Column("first_name")
public String firstName;
@Column("last_name")
public String lastName;
@Column("email")
public String email;
public User(String firstName, String lastName, String email) {
this.firstName = firstName;
this.lastName = lastName;
this.email = email;
}
public static Query<User> all() {
return Model.all(User.class);
}
}
и базовый юнит-тест:
public class BasicTest extends UnitTest {
@Before
public void setup() {
Fixtures.deleteAll();
}
@Test
public void canCreateUser() {
new User("Jason","Miesionczek","atmospherian@gmail.com").insert();
User user = User.all().fetch().get(0);
assertNotNull(user);
assertEquals(1,User.all().count());
}
}
Я понимаю, что в Play! 1.0.3, Поддержка Fixtures для Siena еще не существует, что должно быть исправлено в 1.1, но в то же время, что я должен использовать вместо Fixtures.deleteAll(), чтобы очистить базу данных перед каждым тестом?
Прямо сейчас мое второе утверждение не выполняется, потому что база данных сохраняет ранее вставленные записи.
2 ответа
Вам нужно будет сделать удаление для каждой таблицы. Например:
Model.all(User.class).delete();
Я не знаю, было ли уже поздно, но я добавил некоторую поддержку Fixture для Сиены (протестировано с игрой 1.1, gae 1.4, siena 1.3, crudsiena 1.2).
Поддерживает deleteAll()
а также load()
:
SienaFixture.java http://pastie.org/1367878
Я довольно новичок в игре и в Сиене (1 неделя), так что, возможно, есть лучший способ сделать это (особенно deleteAll()
).