我正在尝试将夹具与验收测试一起使用,但是由于重复的数据导致夹具测试失败,因为每次测试都将夹具重新插入到Mirage DB中。有没有一种方法可以解决这个问题或在每次测试时都移除夹具
setupApplicationTest(hooks);
setupMirage(hooks);
hooks.beforeEach(function() {
this.server.loadFixtures();
});
答案 0 :(得分:1)
您上面显示给我的这段代码是哪里来的?
在接受测试中,Mirage从addon/instance-initializers/ember-cli-mirage-autostart.js
下捆绑在其插件中的初始化程序中自动启动/停止服务器:
let server = startMirage(appInstance);
testContext.server = server;
// To ensure that the server is shut down when the application is
// destroyed, register and create a singleton object that shuts the server
// down in its willDestroy() hook.
appInstance.register('mirage:shutdown', MirageShutdown);
调用:
willDestroy() {
let testContext = this.get('testContext');
testContext.server.shutdown();
delete testContext.server;
}
Ember在每次测试之间启动和停止应用程序,这意味着每个验收测试会自动从一个空的数据库开始。
如果您不在验收测试范围之内,则需要开始阻止自己。
// tests/integration/components/your-test.js
import { startMirage } from 'yourapp/initializers/ember-cli-mirage';
moduleForComponent('your-component', 'Integration | Component | your component', {
integration: true,
beforeEach() {
this.server = startMirage();
},
afterEach() {
this.server.shutdown();
}
});
每次测试后调用关机对于清除数据至关重要