Модульный тест на стороне сервера meteor typescript

У меня проблема с моими модульными тестами на стороне сервера.

Мой тест следующий:

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()
        });
    });
}

И я не могу импортировать коллекцию заглушек, потому что машинопись не нашла ее.

Я пытался установить пакет сервера Meteor на tsconfig.json, но мне это не удалось.

И когда я удаляю StubCollection, у меня есть тайм-аут в 2 секунды, когда "Articles.find ({})"

У вас есть идея решить эту проблему?

0
0
68
1

Ответы 1

У меня проблемы с результатом Article.find ({}) типа Observable с 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");
                }
            }
        });

Можно ли использовать метод find с результатом совместимости с обещанием для лучшего синтаксиса и использовать assert и ожидать? И существует ли проект или решение для импорта пакета на стороне сервера модульного тестирования машинописного текста?

Спасибо за ваш ответ

Другие вопросы по теме