我在服务器端的单元测试有问题。
我的测试是下一个:
import { Meteor } from 'meteor/meteor';
import { Article } from '../../../imports/models/article';
import { Articles } from '../../../imports/collections/articles';
import './articles';
import { Random } from 'meteor/random';
import {Rate} from "../../../imports/models/rate.model";
import { expect, assert } from 'chai';
import {Observable} from "rxjs/Observable";
if (Meteor.isServer) {
describe('Articles', () => {
const userId = Random.id();
beforeEach(() => {
StubCollections.add([Articles]);
StubCollections.stub();
Articles.remove({});
});
it('can delete owned article', async (done) => {
const articleId = await Articles.insert({
title: "string",
content: "string",
owner: userId,
picture_url: "string",
source: "string",
createdAt: new Date()
}).toPromise();
const deleteArticle = Meteor.server.method_handlers["removeArticle"];
// // Run the method with `this` set to the fake invocation
//`enter code here`
const invocation = {userId};
deleteArticle.apply(invocation, [articleId]);
console.log(articleId);
const count = await Articles.find({}).count().toPromise();
// Verify that the method does what we expected
expect(count).equal(0);
StubCollections.restore();
done()
});
});
}
而且我无法导入存根集合,因为打字稿找不到它。
我尝试在tsconfig.json上安装流星服务器包,但我没有成功。
当我删除存根集合时,当"Articles.find({}("时,我的超时时间为 2 秒
你有解决它的想法吗?
我的问题是 Article.find({}( 类型的 Observable with Meteor.observable 结果。
我的新测试是下一个
it('can delete owned article', async done => {
let fixFindToPromise: number = 0;
const articleId = await Articles.insert({
title: "string",
content: "string",
owner: userId,
picture_url: "string",
source: "string",
createdAt: new Date()
}).toPromise();
// console.log('A2', articleId2);
const deleteArticle = Meteor.server.method_handlers["removeArticle"];
// Run the method with `this` set to the fake invocation
deleteArticle.apply({userId}, [articleId]);
// Find the internal implementation of the task method so we can
console.log("ArticleId:", articleId);
Articles.find().subscribe((countLog) => {
fixFindToPromise++;
if (fixFindToPromise == 1 ) {
if ( countLog.length == 0 ) {
done();
} else {
done("Count not correct");
}
}
});
可以使用具有承诺兼容性结果的查找方法以获得更好的语法并使用断言和期望?并且在打字稿单元测试服务器端存在导入包的项目或解决方案?
感谢您的回复